JAX-WS简单使用示例:
1.服务端
1 package com.rong.service; 2 3 import javax.jws.WebMethod; 4 import javax.jws.WebParam; 5 import javax.jws.WebResult; 6 import javax.jws.WebService; 7 8 @WebService 9 public interface UserService { 10 //private私有方法不会被发布,只会发布public方法 11 //exclude默认为false,即发布;若为true,即不发布 12 @WebMethod(operationName="getMyAge",exclude=true) 13 public int getAge(); 14 public @WebResult(name="ResultType")String changeName(@WebParam(name="NameType")String name); 15 }
1 package com.rong.service; 2 3 import javax.jws.WebService; 4 5 //@WebService 6 //通过注解修改wsdl文件信息 7 @WebService(targetNamespace="http://service.rjl.com/", 8 serviceName="UserService", 9 portName="bindingname", 10 name="portname", 11 //UserServiceImpl可能实现多个接口,注解endpointInterface用于 12 //只发布哪个接口服务,并且要在那个接口中添加@WebService 13 endpointInterface="com.rong.service.UserService") 14 public class UserServiceImpl implements UserService { 15 16 @Override 17 public int getAge() { 18 return 0; 19 } 20 21 @Override 22 public String changeName(String name) { 23 return name.toUpperCase(); 24 } 25 26 }
1 package com.rong.test; 2 3 import javax.xml.ws.Endpoint; 4 5 import com.rong.service.UserServiceImpl; 6 7 public class Test { 8 9 public static void main(String[] args) { 10 //第一个参数是发布的URL 11 //第二个参数是服务接口的实现类对象 12 Endpoint.publish("http://127.0.0.1:8080/myservice", new UserServiceImpl()); 13 } 14 15 }
运行main方法
浏览器输入地址:http://127.0.0.1:8080/myservice?wsdl访问wsdl检验是否开启服务
2.客户端
eclipse创建项目,在项目路径下F:\workplace\myclient\src
运行cmd,执行指令生成客户端代码(可用工具生成)
然后在生成的代码文件夹中删除字节码文件.class文件,只保留java文件
返回eclipse开发工具的客户端项目,刷新项目
测试:
1 package com.rong.test; 2 3 import java.net.MalformedURLException; 4 import java.net.URL; 5 6 import javax.xml.namespace.QName; 7 import javax.xml.ws.Service; 8 9 import com.rjl.service.UserService; 10 11 12 public class Test { 13 14 public static void main(String[] args) throws MalformedURLException { 15 16 // 客户端使用服务方式一:见上篇 17 //客户端使用服务方式二 18 URL url=new URL("http://127.0.0.1:8080/myservice?wsdl"); 19 //第一个参数是服务的URI,服务的命名空间名字 20 //第二个参数是WSDL发布的服务名 21 QName serviceName=new QName("http://service.rjl.com/", "UserService"); 22 Service service = Service.create(url, serviceName); 23 UserService userService = service.getPort(UserService.class); 24 System.out.println(userService.changeName("rjl and kobe!")); 25 } 26 }