webservice之实现一个基于JWS的webservice项目
webservice之实现一个基于JWS的webservice项目 ?JAX-WS(Java6引进)?是SOAP协议的一个Java的实现规范,这个新规范是为了简化基于SOAP的Java开发。JAX-WS规范其实就是一组XMLweb services的JAVA API,JAX-WS允许开发者可以选择RPC-oriented或者message-oriented来实现自己的web services。通过使用 Java? API for XMLWeb Services (JAX-WS) 技术设计和开发 Web 服务,可以带来很多好处,能简化 Web 服务的开发和部署,并能加速 Web 服务的开发。 一 、实现一个基于JWS的webservice项目(直接使用JWS api 实现,不借助任何webservice框架) (1)在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(service endpoint interface),并提供相关的实现类SIB(Service implementation Bean)。 (2)通过调用JAX-WS的“服务发布接口-api”就可以将其发布为WebService接口。 ?(4)创建客户端类测试webservice接口。 ?设计流程如下: 通过web service所提供的互操作环境,我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net、php等)的互操作。 另外,JAX-WS同时支持基于SOAP的Web服务和REST风格的Web服务。 二、项目实例 1.设计服务器端,首先创建一个java项目,项目名称为:service_start 1.1 创建接口(SEI) IMyService.java
package org.zttc.service; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService() public interface IMyService { @WebResult(name="addResult") public int add(@WebParam(name="a")int a,@WebParam(name="b")int b); @WebResult(name="minusResult") public int minus(@WebParam(name="a")int a,@WebParam(name="b")int b); @WebResult(name="loginUser") public User login(@WebParam(name="username")String username,@WebParam(name="password")String password); } 1.2 创建实现类(SBI) MyServiceImpl.java
package org.zttc.service; import javax.jws.WebService; @WebService(endpointInterface="org.zttc.service.IMyService") public class MyServiceImpl implements IMyService { @Override public int add(int a,int b) { System.out.println(a+"+"+b+"="+(a+b)); return a+b; } @Override public int minus(int a,int b) { System.out.println(a+"-"+b+"="+(a-b)); return a-b; } @Override public User login(String username,String password) { System.out.println(username+" is logining"); User user = new User(); user.setId(1); user.setUsername(username); user.setPassword(password); return user; } } 1.3发布服务 MyServer.java
package org.zttc.service; import javax.xml.ws.Endpoint; public class MyServer { public static void main(String[] args) { String address = "http://localhost:8888/ns"; Endpoint.publish(address,new MyServiceImpl()); } } 注:我们在开始设计IMyService接口时,代码中并没有@WebService(),@WebResult(name="addResult")...等注解,这些注解是在发布服务的时候我们后来添加的;另外,MyServiceImpl.java中的@WebService(endpointInterface="org.zttc.service.IMyService")也是发布服务时添加的注解配置。 1.3 在浏览器通过webservice uri测试服务是否发布成功
在浏览器输入; http://localhost:8888/ns?wsdl 得到wdsd格式的xml文件则说明发布成功。 2.客户端设计,新创建一个项目,项目名称为:service_start_client (模拟异构(或不同)系统的交互) 2.1. 生成代理类-wsimport命令用于生成本地代理(即本地对象)。 2.1.1 使用wsimport命令根据webservice uri ?生成本地代理类 在d:/webservice目录下新建/01文件夹用于存放生成的本地代理类。 2.1.2 将生成的本地代理类(包括生成的包路径)拷贝到service_start_client项目的src目录下。 2.2. 客户端测试 TestClient2.java
package org.zttc.service; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; public class TestClient2 { /** * @param args * @throws MalformedURLException */ public static void main(String[] args) throws MalformedURLException { //创建访问wsdl服务地址的url URL url = new URL("http://localhost:7777/ns?wsdl"); //通过Qname指明服务的具体信息 QName sname = new QName("http://service.zttc.org/","MyServiceImplService"); MyServiceImplService msis = new MyServiceImplService(url,sname); IMyService ms = msis.getMyServiceImplPort(); System.out.println(ms.minus(29,11)); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |