一个java生成与使用WebService的简单例子

用jws在linux上发布webservice 总是提示404 未找到原因。换一种方法发布webservice

java用Metro生成WebService,在Tomcat中发布WebService和如何使用WebService

一个简单的例子:

 

下载metro,并安装。(本例使用1.5)
http://java.net/projects/metro
下载完metro-1.5.jar的包后,运行java -jar metro-1.5.jar
在metro.jar所在的目录下面会生成一个metro文件夹,里面包含了我们要使用的包等。

导包:如下5个包。
/metro1_5Core/webservices-api.jar    
/metro/webservices-extra.jar
/metro/webservices-extra-api.jar
/metro/webservices-rt.jar
/metro/webservices-tools.jar
(可以将该包复制到Tomcat的servers/lib下面,保证webservice的不出错)

 

实体类:User

[java]  view plain copy
  1. package com.you.me.web.entity;  
  2.   
  3. public class User {  
  4.   
  5.  private String userId="";  
  6.  private String userName="";  
  7.  private String nickName="";  
  8.  private String email="";  
  9.  private String password="";  
  10.  private String registTime="";  
  11.  private String statusId="";  
  12. }  

写要发布的WebService。
如用户服务类UserService,可以根据用户ID得到用户对象

[java]  view plain copy
  1. package com.you.me.ws;  
  2.   
  3. import javax.jws.WebMethod;  
  4. import javax.jws.WebService;  
  5.   
  6. import com.you.me.web.entity.User;  
  7.   
  8. /** 
  9.  * @author you.me.2011-4-23 
  10.  * 
  11.  */  
  12. @WebService( serviceName="UserServiceWS",  
  13.   portName="UserServiceInstance",  
  14.   name="UserService",       
  15.   targetNamespace="http://www.mylitboy.com/youme")  
  16. public class UserServiceImpl {  
  17.  @WebMethod  
  18.  public User getUserById(String id){  
  19.   return new User("1""abc","abcd","abc@abc.com");  
  20.  }  
  21. }  

注: 
 serviceName不写,默认为类名+Service,如UserServiceImplService
 name不写,默认为类名,如UserServiceImpl
 portName不写,默认为类名+Port,如UserServiceImplPort
 targetNamespace不写默认为包名,如(http://ws.me.you.com


配置:web.xml
在web.xml中添加如下语句。

[xhtml]  view plain copy
  1. <listener>  
  2.  <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>  
  3. </listener>  
  4.   
  5. <servlet>  
  6.  <servlet-name>HelloService</servlet-name>  
  7.  <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>  
  8. </servlet>  
  9. <servlet-mapping>  
  10.  <servlet-name>HelloService</servlet-name>  
  11.  <url-pattern>/ws/*</url-pattern>  
  12. </servlet-mapping>  

注:
 url-pattern:为你需要listener监听的访问地址。

 

配置sun-jaxws.xml
在WEB-INF中新建sun-jaxws.xml文件。

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <endpoints version="2.0"  
  3.  xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.  xsi:schemaLocation="http://java.sun.com/xml/ns/jax-ws/ri/runtime http://java.sun.com/xml/ns/jax-ws/ri/runtime/sun-jaxws.xsd ">  
  5.  <endpoint implementation="com.you.me.ws.UserServiceImpl"  
  6.   url-pattern="/ws/a" name="UserService"></endpoint>  
  7.  <endpoint implementation="com.you.me.ws.UserServiceImpl2"  
  8.   url-pattern="/ws/ab" name="UserService2"></endpoint>  
  9. </endpoints>  
注:
 如果有多个WebService,写多个endpoint即可。
 implementation:WebService类
 url-pattern:访问的地址,要输入web.xml中url-pattern的范围内。
 name:随便写

 

然后把工程部署到Tomcat中去。
访问如下地址可以查看相应的WebService信息:
http://localhost:8116/youme/ws/a
http://localhost:8116/youme/ws/a?wsdl

 

使用wsimport生成WebService代码

然后在cmd中输入:wsimport命令生成webService相关代码。
C:/Users/you.me>wsimport -s d://temp http://localhost:8116/youme/ws/a?wsdl
出现如下语句表示成功。
parsing WSDL...
generating code...
compiling code...


此时在D:/temp下面可以看到一些java类:
D:/temp/com/mylitboy/youme
GetUserById.java
GetUserByIdResponse.java
ObjectFactory.java
User.java
UserService.java
UserServiceWS.java


如此服务器端WebService算是完成了。


下面开始使用生成的WebService。

我们可以把这些java类打包成一个jar文件。也可以直接复制到其他工程中使用。

使用方法:
将该文件夹复制到新建的工程中(即你要用WebService的工程)。
/youmews_test/com/mylitboy/youme/GetUserById.java
/youmews_test/com/mylitboy/youme/GetUserByIdResponse.java
......


写测试代码:
Test.java

[java]  view plain copy
  1. package ss;  
  2.   
  3. import com.mylitboy.youme.UserService;  
  4. import com.mylitboy.youme.UserServiceWS;  
  5.   
  6. /** 
  7.  * @author you.me.2011-4-23 
  8.  * 
  9.  */  
  10. public class Test {  
  11.  public static void main(String[] args) {  
  12.   UserService us = new UserServiceWS().getUserServiceInstance();  
  13.   System.out.println(us.getUserById("1"));  
  14.  }  
  15. }  

注:

 这里面的UserService 就是前面@WebService里面的name属性值。

 UserServiceWS就是@WebService里面的serviceName属性值。

 
如此整个过程就完成了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值