`
java_cd
  • 浏览: 59451 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAX-WS发布WebService实践1:——整数四则运算器(IntegerCalculator)

阅读更多
功能设计】

1. 完成简单的两个整数相加、相减、相乘、相除;

2. 重点是学会用JAX-WS发布WebService,并调用该WebService;

3. 了解JAX-WS的工作机制;

【流程设计】

1.       建立WebServiceProject(IntegerCalculator);

2.       创建普通的JavaClass(IntegerCalculator.java),实现WebService的业务逻辑;

3.       创建一个WebService;

1) NewèMyEclipseèWebServicesèWebSerivce;

2) 选择“jax-ws”,在“Strategy”中选择“CreateWebServiceFromJavaBean”(因为上面已经建立了实现业务逻辑的类了,现在只是将其发布为WebService);

3) 选择上面建立的Java Class(IntegerCalculator.java);

4) 点Finish,向导会自动生成:

(1)       IntegerCalculatorDelegate.java,作用:IntegerCalculator的接口,生成该类的事例并调用该类的方法;

(2)       在WEB-INF中生成Web.xml,作用:配置监听器以及Servlet的实现类;

(3)       在WEB-INF中生成sun-jaxws.xml,作用:配置WebServicePort的实现类(IntegerCalculatorDelegate.java)

(4)       在WEB-INF中生成WSDL,作用:描述该WebService的信息;

4.       发布WebService;

1) 直接利用右击项目名称èRunAsèMyEclipseServerApplication,就默认为将其部署到MyEclipse默认的服务器(Tomcat)上,并运行服务器了;

2) 目前只有MyEclipse6.5以上的版本自带的Tomcat上加入了jax-ws的架包,如果我们采用其他的Server,还需要我们在项目中采用“buildPathèMyEclipseLibrariesèJAX-WS的两个包”的方式,在项目中加入需要的包,或者将用到得包直接放到Server上去;

5.       通过WebServiceExplorer来访问WebService;

1) 访问地址:http://localhost:8080/ProjectName/PortName?WSDL(本例中为:

http://localhost:8080/IntegerCalculator/IntegerCalculatorPort?WSDL)

2) 在“WebServiceExplorer”中选“WSDLMain”,输入访问地址即可;

4. 生成Client来访问WebService;(IntegerCalculatorClient项目中)

1) 新建一个JavaProject(IntegerCalculatorClient);

2) 加入jax-ws的两个架包;

3) 建立WebServiceClient:NewèMyEclipseèWebServiceClient;

3) 输入“WSDLURL”:http://localhost:8080/ProjectName/PortName?WSDL,或者

如果WSDLFile在本地也可以导入该File所在位置;这样会在你们指定的文件夹中自动生成很多类;

4) 再建立一个文件夹,在其中写调用WebService的Client类,并在其中写main()方法:

(1)       创建该WebService实例;

(2)       通过该实例得到服务的Port(即在本地生成了一个该WebService的代理);

(3)       通过该代理来调用服务中的方法;

【小结】

1.       JAX-WS的工作机制;

1)       其为每个WebService都配置了一个Servlet;

2)       为一个或多个WebService设置了监听器(LIstener),时刻监听对于“<url-patern/>”的访问,当遇到对其的访问时就交给相应的Servlet的实现类来处理;

3)       PortName:是和WebService绑定在一起的。

4)       调用jax-ws发布的WebService流程(如截图00):



原理:

Server端:Listener一直在8080端口上监听着,只要有“/IntegerCalculatorPort”的Soap消息就调用相应的Servlet(一个WebService对应着一个Servlet)来处理(这些都在Web.xml中设定好),对应的Servlet实现类会做如下处理:

(1)       找到给WebService对应的Port(Port和WebService是Binding在一起的);

(2)       在“sun-jaxws.xml”中找到给Port的实现类,即为XXXDelegate;

(3)       该Delegate的实现就是调用WebService的实现类;

SP会发布出WebService的WSDL,Client主要是通过得到它来调用WebService;

Client端:(1) 在本地得到WSDL文档(或得到WSDL文档的URL);

                    (2) 通过XML解析来为该WebService设定本地代理;

              (3) 通过创建的WebService的本地代理来调用该WebService
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics