myeclipse10上基于JAX-WS开发Webservice

来源:互联网 发布:淘宝上杜蕾斯是真的吗 编辑:程序博客网 时间:2024/06/05 16:02

总结:服务器端
1 新建webservice工程 JAX-WS框架 J2EE6.0
2 创建服务类 要发布的执行方法
new->package com.webservice.ws等
new->class

3 创建一个web service
New Web Service ->Strategy(Bottom-up scenario)->JavaBean(选择生成的类)->Generate WSDL in project
(Myeclipse会自动生成CalculatorDelegate代理类,还有一些必须的JAX-WS描述符,而且会自动在服务器目录下的web.xml中配置WebService的一些mappings)

4 部署websercice
不用myeclipse自带的tomcat,使用外接的tomcat7.x.需要给工程导入两个包(JAX-WS 2.1 Runtime Jax-ws 2.1 API libraries)
在调试框里显示servers
tomacat右击选择Add Deployment,给它装载好需要发布的工程

5 测试

1)运行tomcat服务器,
在工具栏中点击launch WebService Explorer 
击右上角的WSDL视图 输入http://localhost:8080/WebServiceProject(工程名)/CalculatorPort(类名+Port)?WSDL 

2)创建Webservice Client 来调用该方法
JAVA Project->工具条中点击new Web Service Client ->JAX-WS->WSDL URL完成,写一些测试方法即可.

---------------------------------------------------------------

WebService开发流程(AXIS、JAX-WS、XFire框架)
        导言:WebService存在于互联网当中的组件,具有独立性,跨平台和技术,通过URL进行定位调用;优点是可以重复使用组件服务可以跨平台和技术,实现不同程序之间的交互可以使用组件服务灵活组合,提高资源利用率,节省资源
   一、WebService开发流程
   --AXIS框架的使用(需要另外安装组件)

预先建立一个WebService工程
   a.引入开发包
   b.配置web.xml,添加org.apache.axis.transport.http.AxisServlet映射和url-pattern.
   c.编写WebService的接口和实现类
   d.在WEB-INF目录下创建server-config.wsdd发布文件,定义发布的Service组件:

服务名-对应的类名-方法名
&&e定义返回类型:如果WebService服务的方法用到自定义类型,需要在发布文件中定义<beanMapping>映射


  --JAX-WS框架的使用(默认使用该类,jdk1.6版本以上使用)

  a.在MyEclipse中建立一个webService工程(假设叫myJAXWS),使用JAX-WS框架。
  b.写一个普通的JAVA类(假设叫myBean)
 c.在myJAXWS,中通过JAVA类myBean建立通过webService(由MyEclipse自动生成)
  d.可以通过http://localhost:8888/工程名/myBeanPort查看可用的webService;
 你可以http://localhost:8888/工程名/myBeanPort?wsdl查看wsdl文件(xml格式)
 e.如果webService中返回类型为自定义对象,那么可用考虑将对象转化为字符串传送。
 注:对象与字符串相互转化,可以考虑用JOX的BeanXMLMapping技术。

   --XFire框架的使用(jdk1.5以下版本使用,现在都显示deprecated)
预先建立一个WebService工程。
   a.引入开发包(创建一个XFire工程) 
   b.配置web.xml,添加org.codehaus.xfire.transport.http.XFireConfigurableServlet映射


c.编写WebService的接口和实现类 
   d.在services.xml中定义要发布的Service组件
   e.如果WebService服务的方法用到自定义类型,需要在组件接口同级目录下编写(接口名.aegis.xml文件),定义自定义类型


f.访问service路径
http://localhost:8888/XFireWebServiceDelete/services/XuliangXFire?wsdl
   使用webService
通过XFire自动生成:
见一个普通的JAVA工程,新建包,在包下右键other--->MyEclipse--->webservice--->ServiceClient--->自动wsdl的路径,即可。

二、WebService基础知识
1.什么WebService
    存在于互联网当中的组件,具有独立性,
跨平台和技术,通过URL进行定位调用
2.有什么好处,特点
    可以重复使用组件服务
 可以跨平台和技术,实现不同程序之间的交互
 可以使用组件服务灵活组合,提高资源利用率,节省资源
3.相关关键词及概念
 HTTP+XML 
 SOAP(Simple Object Access Protocol):简单对象访问协议
 WSDL(Web Service Description Language):WebService描述语言
 UDDI(Universal Description、Discovery、and Integration):用于提供WebService注册、查找等功能

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

   这里是一个JAX-WS的框架,服务器开放计算器的操作接口的实例,使用外接Tomcat发布,两种测试方法(web service explorer,建立客户端)测试是否发布成功.

环境要求,我的开发环境是myeclipse10+Tomcat7.0+jdk1.7

客户端可以用eclipse  Juno Service Release 2


.新建一个工程 
开始我们新建一个Web Service Project工程File->New->Web Service Project(Optional Maven Support) 


Note:A JAX-WS web service can also be generated in any existing Java EE 5 web project. 

我们给这个工程取名为WebServiceProject.注意JAX-WS支持只在javaEE5或更高版本的工程中是可行的。如果你需要使用低版本的工程类型(java1.4或者1.3),那么只能使用XFire Web Service代替JAX-WS。 

这里我们使用上面的JAX—WS。 
4.创建服务类 
服务类就是一个普通的java类,负责提供我们想要发布的执行方法。这里我们写一个简单的计算器类,实现几个典型的计算器应用方法,如加减乘除。 
首先我们先建一个包,WebServiceProject->src->new->package,取名com.myeclipseide.ws 

让后我们在这个包下建一个类,Calculator.java. 

根据上面提到的,这个计算器类实现计算器的加减乘除算法,简单实现: 
Java代码  收藏代码
  1. package com.myeclipseide.ws;   
  2.   
  3. public class Calculator {   
  4.     public int add(int a, int b) {   
  5.         return (a + b);   
  6.     }   
  7.   
  8.     public int subtract(int a, int b) {   
  9.         return (a - b);   
  10.     }   
  11.   
  12.     public int multiply(int a, int b) {   
  13.         return (a * b);   
  14.     }   
  15.   
  16.     public int divide(int a, int b) {   
  17.         return (a / b);   
  18.     }   
  19. }   

可以看出,这个类中的方法是非常简单的,没有用到特殊的注释还有接口,父类之类的东西。 
5.创建一个Web Service 
在上面的工具条中点击新建Web Service 

Note:如果没有的话可以File->New->others->Myeclipse->WebService->webService 
点击之后出现的屏幕,在Strategy中选择Bottom-up scenario,因为我们已经建立好了Calculator类而且想根据它建立JAX-WS服务。 

下面是创建的最后一个屏幕,你需要选择提供webService方法的javaBean,在我们这个例子中就是我们已经建立好的Calculator类。 

填好之后,Myeclipse会自动帮我们填满其他的项,Select Generate WSDL in project and hit Finish. 

点击完成之后,Myeclipse会自动生成CalculatorDelegate代理类,还有一些必须的JAX-WS描述符,而且会自动在服务器目录下的web.xml中配置WebService的一些mappings,方便将webService部署到服务器中。 

到此web service已经建立好了,我们开始部署它然后进行测试。 
6.部署和测试webService。 
这里我们不使用用Myeclipse自带的tomcat服务器,使用自己应经在电脑中部署好的tomcat5.5。 
在server面板中右击,选择configure 

部署自己的tomcat注意选择jdk要跟项目中的相同。 


现在要向工程中导入JAX-WS的jar包 
在项目名称上右击->properties->Add Library->Myeclipse Libraries->最后面的两个。 




点击完成,导入成功。 
Note:Myeclipse自带的tomcat中有自带的这两个jar包,可以不用导入。 
6.1部署 
在部署好的tomcat服务器上右击选择Add Deployment 


点击完成。 
6.2测试 
运行tomcat服务器,在工具栏中点击launch WebService Explorer 

打开后,点击右上角的WSDL视图,可以看到下面的屏幕 



在WSDL URL中填写路径:http://localhost:8888/WebServiceProject/CalculatorPort?WSDL 
解释下路径组成: 
http://localhost:8888/是服务器的路径,我的端口号是8888,可以根据自己的更改,一般都是8080。 
/WebServiceProject = We know by default the Web Context-root that is used to deploy(部署) web projects matches the name of the projects. (因为我们没有为这个工程自定义我们的Web Context-root,所以他就是这个工程的名字) 
/CalculatorPort = As we saw from the last screenshot in Section #5, when our JAX-WS web service was generated, it was bound using a servlet-mapping in the web.xml file to the /CalculatorPort path. 
Xml代码  收藏代码
  1. <servlet>  
  2.     <description>JAX-WS endpoint - CalculatorService</description>  
  3.     <display-name>CalculatorService</display-name>  
  4.     <servlet-name>CalculatorService</servlet-name>  
  5.     <servlet-class>  
  6.         com.sun.xml.ws.transport.http.servlet.WSServlet  
  7.     </servlet-class>  
  8.     <load-on-startup>1</load-on-startup>  
  9.   </servlet>  
  10.   <servlet-mapping>  
  11.     <servlet-name>CalculatorService</servlet-name>  
  12.     <url-pattern>/CalculatorPort</url-pattern>  
  13.   </servlet-mapping>  

?WSDL = This is a universal query string argument that can be added to the end of any web service which will tell the web service to return it's full WSDL to the caller. In this case, the WSDL is returned to our Web Services Explorer tool which loads it up, and displays the web services exposed operations to us. 
弄清楚之后,我们开始测试,比如我们选择add方法: 
填写args,点击go,在status中就会显示结果。 



结果是正确的。 
7.创建Webservice Client 
现在我们已经部署好Webservice,而且应经测试过了,那我们新建一个Webservice client,来调用Webservice提供的方法。 
7.1新建一个java project,给他取个名字。比如我们叫它ClientofWebService 


在工具条中点击new Web Service Client 


然后按照以下步骤操作: 

The last step of the web service client creation is to specify either a WSDL File or a WSDL URL for the wizard to retrieve the web service WSDL from. In our case we are using the URL and generate the client into the new package com.myeclipseide.ws.client: 

http://localhost:8888/WebServiceProject/CalculatorPort?WSDL 


点击Next知道完成。 
可以看到在新建的java project ClientofWebService中,src文件夹下产生了许多的文件,根据名称我们大体可以了解其意思,可以打开看一下源代码,其实不难理解。比如add文件,就是Calculator类中add方法的两个参数的get和set方法。其他类似。 
我们在文件夹下见一个类test.java写一个main函数测试 
Java代码  收藏代码
  1. public static void main(String[] args) {   
  2.     /* Create the service instance */   
  3.     CalculatorService service = new CalculatorService();   
  4.     CalculatorDelegate delegate = service.getCalculatorPort();   
  5.   
  6.     /* Using the web service, perform the 4 calculations */   
  7.     System.out.println("1. 3+7=" + delegate.add(37));   
  8.     System.out.println("2. 12-2=" + delegate.subtract(122));   
  9.     System.out.println("3. 9*9=" + delegate.multiply(99));   
  10.     System.out.println("4. 40/2=" + delegate.divide(402));   
  11. }   


运行得到如下结果: 
1. 3+7=10 
2. 12-2=10 
3. 9*9=81 
4. 40/2=20 
测试完成。 
8. Resources 
In this section we want to provide you with additional links to resources that supplement the topics covered in this tutorial. While this is not an exhaustive list, we do make an effort to point to the more popular links that should provide you with diverse, high-quality information. 

Example Web Service Project & Web Service Client Project 
NOTE: The example projects provided are configured to run against WebSphere 6.1. You may need to adjust the Target Server and/or the runtime JRE libraries used to build the projects to more closely match your particular build and deployment environment. 

有些地方说的不是很好,但是大体应该能够弄明白,限于能力问题,请大家体谅。 

有关web服务添加用户认证的 博客http://blog.csdn.net/ytzyg/article/details/6859668

原创粉丝点击