- 浏览: 861940 次
-
文章分类
- 全部博客 (365)
- java (124)
- spring mvc (21)
- spring (22)
- struts2 (6)
- jquery (27)
- javascript (24)
- mybatis/ibatis (8)
- hibernate (7)
- compass (11)
- lucene (26)
- flex (0)
- actionscript (0)
- webservice (8)
- rabbitMQ/Socket (15)
- jsp/freemaker (5)
- 数据库 (27)
- 应用服务器 (21)
- Hadoop (1)
- PowerDesigner (3)
- EJB (0)
- JPA (0)
- PHP (2)
- C# (0)
- .NET (0)
- html (2)
- xml (5)
- android (7)
- flume (1)
- zookeeper (0)
- 证书加密 (2)
- maven (1)
- redis (2)
- cas (11)
最新评论
-
zuxianghuang:
通过pom上传报错 Artifact upload faile ...
nexus上传了jar包.通过maven引用当前jar,不能取得jar的依赖 -
流年末年:
百度网盘的挂了吧???
SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) -
953434367:
UfgovDBUtil 是什么类
Java发HTTP POST请求(内容为xml格式) -
smilease:
帮大忙了,非常感谢
freemaker自动生成源代码 -
syd505:
十分感谢作者无私的分享,仔细阅读后很多地方得以解惑。
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
webService是一种跨语言的系统间交互标准。在java中使用webservice根据服务器端的服务根据描述生成WSDL文件,并将应用与此WSDL文件一起放入HTTP服务器中,借助服务工具根据WSDL文件生成客户端STUB代码。此代码的作用是将产生的对象请求信息封装成标准的SOAP格式数据,并发送到服务器端,服务器端根据接收到的SOAP格式数据进行转换,并最终通过反射调用响应类的响应方法。
jdk 6中集成了WEB service的支持,通过WebService 的annotation来暴露服务的实现,并通过Endpoint.publish将服务发布到指定的地址,客户端通过wsimport来访问响应地址的wsdl文件,生成调用服务器端服务的stub类信息,客户端即可通过生成的类来调用服务器的服务了。
具体示例如下:
1.对外暴露的接口
public interface TestWebService { public String echo(); }
2.服务器端的实现类,并通过@WebService来指定对外提供服务的服务名称,客户端生成的类目和包名
- import javax.jws.WebService;
- import javax.xml.ws.Endpoint;
- @WebService(name="MyTestWS",serviceName="MyWebService",targetNamespace="http://localhost/client")
- public class WebServiceImpl implements TestWebService{
- @Override
- public String echo() {
- return "webservice return msg";
- }
- public static void main(String[] args) {
- Endpoint.publish("http://localhost:8080/MyWebService", new WebServiceImpl());
- }
- }
import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService(name="MyTestWS",serviceName="MyWebService",targetNamespace="http://localhost/client") public class WebServiceImpl implements TestWebService{ @Override public String echo() { return "webservice return msg"; } public static void main(String[] args) { Endpoint.publish("http://localhost:8080/MyWebService", new WebServiceImpl()); } }
3.然后运行服务器的WebServiceImpl的main函数,暴露服务并将服务注册到一个http服务地址上,客户端通过jdk的bin下面的wsimport命令来获取服务器的wsdl文件并生成客户端的stub类信息
wsimport -keep http://localhost:8080/MyWebService?wsdl
4.然后在你的路径上就会生成下面几个类
5.然后我们编写客户端的调用代码
import localhost.client.MyWebService;
- public class WebServiceClient {
- public static void main(String[] args) {
- MyWebService myWebService = new MyWebService();
- System.out.println(myWebService.getMyTestWSPort().echo());
- }
- }
public class WebServiceClient { public static void main(String[] args) { MyWebService myWebService = new MyWebService(); System.out.println(myWebService.getMyTestWSPort().echo()); } }
6.执行客户端的调用代码,输出如下:
7.我们看下最终生成客户端服务调用的类内容
- package localhost.client;
- import java.net.MalformedURLException;
- import java.net.URL;
- import javax.xml.namespace.QName;
- import javax.xml.ws.Service;
- import javax.xml.ws.WebEndpoint;
- import javax.xml.ws.WebServiceClient;
- /**
- * This class was generated by the JAXWS SI.
- * JAX-WS RI 2.0_02-b08-fcs
- * Generated source version: 2.0
- *
- */
- @WebServiceClient(name = "MyWebService", targetNamespace = "http://localhost/client", wsdlLocation = "http://localhost:8080/MyWebService?wsdl")
- public class MyWebService
- extends Service
- {
- private final static URL MYWEBSERVICE_WSDL_LOCATION;
- static {
- URL url = null;
- try {
- url = new URL("http://localhost:8080/MyWebService?wsdl");
- } catch (MalformedURLException e) {
- e.printStackTrace();
- }
- MYWEBSERVICE_WSDL_LOCATION = url;
- }
- public MyWebService(URL wsdlLocation, QName serviceName) {
- super(wsdlLocation, serviceName);
- }
- public MyWebService() {
- super(MYWEBSERVICE_WSDL_LOCATION, new QName("http://localhost/client", "MyWebService"));
- }
- /**
- *
- * @return
- * returns MyTestWS
- */
- @WebEndpoint(name = "MyTestWSPort")
- public MyTestWS getMyTestWSPort() {
- return (MyTestWS)super.getPort(new QName("http://localhost/client", "MyTestWSPort"), MyTestWS.class);
- }
- }
package localhost.client; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import javax.xml.ws.WebEndpoint; import javax.xml.ws.WebServiceClient; /** * This class was generated by the JAXWS SI. * JAX-WS RI 2.0_02-b08-fcs * Generated source version: 2.0 * */ @WebServiceClient(name = "MyWebService", targetNamespace = "http://localhost/client", wsdlLocation = "http://localhost:8080/MyWebService?wsdl") public class MyWebService extends Service { private final static URL MYWEBSERVICE_WSDL_LOCATION; static { URL url = null; try { url = new URL("http://localhost:8080/MyWebService?wsdl"); } catch (MalformedURLException e) { e.printStackTrace(); } MYWEBSERVICE_WSDL_LOCATION = url; } public MyWebService(URL wsdlLocation, QName serviceName) { super(wsdlLocation, serviceName); } public MyWebService() { super(MYWEBSERVICE_WSDL_LOCATION, new QName("http://localhost/client", "MyWebService")); } /** * * @return * returns MyTestWS */ @WebEndpoint(name = "MyTestWSPort") public MyTestWS getMyTestWSPort() { return (MyTestWS)super.getPort(new QName("http://localhost/client", "MyTestWSPort"), MyTestWS.class); } }
发表评论
-
eclispe 实用插件大全
2016-03-31 10:17 856在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的 ... -
单点登录 SSO Session
2016-03-14 16:56 4062单点登录在现在的 ... -
通用权限管理设计 之 数据库结构设计
2016-01-26 13:22 2966通用权限管理设计 之 ... -
分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下载)
2016-01-26 13:22 1512分享一个基于ligerui的系统应用案例ligerRM V2 ... -
通用权限管理设计 之 数据权限
2016-01-26 13:20 752通用权限管理设计 之 数据权限 阅读目录 前 ... -
使用RSA进行信息加密解密的WebService示例
2015-12-28 10:30 890按:以下文字涉及RS ... -
防止网站恶意刷新
2015-10-22 10:55 723import java.io.IOExcept ... -
单点登录
2015-10-19 14:24 785Cas自定义登录页面Ajax实现 博客分类: ... -
session如何在http和https之间同步
2015-09-14 09:25 2272首先说下 http>https>http ... -
基于 Quartz 开发企业级任务调度应用
2015-08-17 11:17 851Quartz 是 OpenSy ... -
Java加密技术(十二)——*.PFX(*.p12)&个人信息交换文件
2015-08-17 11:17 889今天来点实际工 ... -
Java加密技术(十)——单向认证
2015-08-13 10:13 690在Java 加密技术(九)中,我们使 ... -
Java加密技术(九)——初探SSL
2015-08-13 10:12 910在Java加密技术(八)中,我们模拟 ... -
Java加密技术(八)——数字证书
2015-08-13 10:12 903本篇的主要内容为Java证书体系的实 ... -
Java加密技术(七)——非对称加密算法最高级ECC
2015-08-13 10:12 989ECC ECC-Elliptic Curv ... -
Java加密技术(六)——数字签名算法DSA
2015-08-13 10:11 1086接下来我们介绍DSA数字签名,非对称 ... -
Java加密技术(五)——非对称加密算法的由来DH
2015-08-12 16:13 882接下来我们 ... -
Java加密技术(四)——非对称加密算法RSA
2015-08-12 16:11 1108接下来我们介绍典型的非对称加密算法—— ... -
Java加密技术(三)——PBE算法
2015-08-12 16:10 980除了DES,我们还知道有DESede( ... -
Java加密技术(二)——对称加密算法DES&AES
2015-08-12 16:09 736接下来我们介绍对称加密算法,最常用的莫 ...
相关推荐
如示例代码所示,`@WebService`, `@WebMethod`, `@WebParam` 和 `@WebResult`等注解使得Java Web服务的定义更加直观和简洁。 2. **JAXB2**: JAXB (Java Architecture for XML Binding) 2.0 提供了对象与XML之间的...
这意味着我们可能需要使用JAX-WS的早期版本,因为JDK 1.6的内置支持可能不包括更现代的API。 以下是基于这些技术实现JSON文件操作的一般步骤: 1. **创建WebService接口**:定义一个Java接口,声明将要提供的服务...
Java自JDK 6 Update 17版本起内置了对WebService的支持,这大大简化了开发过程。下面详细介绍如何使用这一特性: 1. **环境准备**:确保安装的JDK版本为1.6 Update 17或更高版本。较低版本的JDK可能不支持内建的...
虽然JDK内置的Web服务支持足够基础使用,但为了更高的性能和灵活性,开发者可能会选择第三方框架,如Apache CXF或Glassfish Metro,这些框架提供了更多高级功能和优化选项。 总之,JDK Webservice涉及到的核心是...
在【描述】中提到的学习笔记,作者分享了自己在Java项目中使用WebService技术的经历,并逐步解释了如何入门。以下是对笔记内容的详细解析: 1. **实验环境**: - 操作系统:Windows 2000 - JDK版本:1.6 - Java ...
- 如果使用的是JDK1.6早期版本,需要升级到1.6u17或更高,或者先使用APT(Annotation Processing Tool)预编译。 2. **发布服务**: - 可以通过CXF提供的工具或自定义代码发布服务。例如,可以创建一个启动类,...
在这个场景中,我们将深入探讨如何使用JDK 1.6及以上版本内置的JAX-WS来发布Web服务。 一、JAX-WS基础 1. **定义服务接口**:在JAX-WS中,我们首先定义一个Java接口,该接口声明了Web服务提供的操作。这些接口方法...
- **集成能力**:CXF能够很好地与各种应用服务器集成,比如内置的Jetty应用服务器,同时还支持通过Yoko实现CORBA的支持,通过Tuscany支持SCA,通过ServiceMix支持JBI。 #### 二、CXF环境搭建与配置 CXF的安装非常...