JAX-WS(Java6 introduced) is a Java implementation specification of the SOAP protocol, This new specification is to simplify SOAP-based Java development. The JAX-WS specification is actually a set of JAVA API for XML web services. JAX-WS allows developers to choose between RPC-oriented or message-oriented To implement your own web services. By using Java™ API for XMLWeb Services (JAX-WS) technology to design and develop Web services, it can bring many benefits, simplify the development and deployment of Web services, and accelerate the development of Web services.
In JAX-WS, a remote call can be converted to an XML-based protocol, such as SOAP. In the process of using JAX-WS, developers do not need to write any code to generate and process SOAP messages. The runtime implementation of JAX-WS will convert these API calls into corresponding SOAP messages.
First, implement a JWS-based webservice project (directly use JWS api to achieve, without the help of any webservice framework)
(1) On the server side, the user only needs to define the interface that needs to be implemented for remote calls through the Java languageSEI (service endpoint interface) and provide the relevant implementation class SIB (Service implementation Bean).
(2) By call JAX-WS’s “Service Publishing Interface-api”, it can be span style=”color:rgb(255,0,0);”>Publish as WebService interface.
(3) On the client side, users can use JAX-WS API to create a proxy (substituting local objects for remote services) to implement calls to the remote server side. The wsimport command is used to generate a local proxy (that is, a local object).
(4) Create a client class to test the webservice interface.
The design process is as follows:
Of course, JAX-WS also provides a set of API calls for operations on underlying messages. You can directly use SOAP messages through Dispatch or XML message sending request or use Provider to process SOAP or XML message.
Through the interoperability environment provided by web service, we can easily realize the interoperability between JAVA platform and other programming environments (.net, php, etc.) with JAX-WS. In addition, JAX-WS supports both SOAP-based Web services and REST-style Web services.
Second, project example
1. To design the server side, first create a java project, the project name is: service_start< /strong>
1.1 Create Interface (SEI)
IMyService.java
- packageorg.zttc.service;
- importjavax.jws.WebParam;
- import< span style="border:none;background-color:inherit;"> javax.jws.WebResult;
- importjavax.jws.WebService;
- @WebService< span style="border:none;background-color:inherit;">()
- publicinterfaceIMyService{< /span>
- < span style="border:none;color:#000000;background-color:inherit;"> @WebResult(name=< span class="string" style="border:none;color:#0000FF;background-color:inherit;">“addResult” )
- public span>intadd(@WebParam(name=“a”)inta,< /span>@WebParam(name=“b”)intb);
- @WebResult(name =“minusResult”)
- public< /span>intminus(@WebParam(name=“a”) span>inta,@WebParam(name=“b”)intb); b); span>
- @WebResult(name=“loginUser”) li>
- publicUser login(@WebParam(name=< /span>“username”)String username,@ WebParam(name=“password”)Stringpassword);
- }
1.2 Create Implementation Class (SBI) strong>
MyServiceImpl.java
- packageorg.zttc.service;
- importjavax.jws.WebService;
- @WebService(endpointInterface=< /span>“org.zttc.service.IMyService”)
- publicclassMyServiceImplimplementsIMyService{ /span>
- @Override
- publicint add(inta,intb){
- System.out.println(a+“+”+b+ “=”+(a+b));
- returna+b;
- < /li>
- @Override
- publicintminus(int a,intb){
- returnab;
- < span style="border:none;color:#000000;background-color:inherit;"> @Override
- public< /span>User login(String username, String password){
- System.out.println(username+ ” is logining”);
- Useruser=newUser();
- user.setId(1);
- user.setUsername(username);
- user.setPassword(password);
- returnuser;
- }
< li style="border-style:none none none solid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:outside;line-height:18px;background-color:rgb( 248,248,248);"> System.out.println(a+“-“+b+“=”+(ab));+(ab)); span >
1.3 Publishing Service
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));
- }
- }
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 服务的开发。
在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议,比如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。 JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。
一 、实现一个基于JWS的webservice项目(直接使用JWS api 实现,不借助任何webservice框架)
(1)在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(service endpoint interface),并提供相关的实现类SIB(Service implementation Bean)。
(2)通过调用JAX-WS的“服务发布接口-api”就可以将其发布为WebService接口。
(3)在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。 wsimport命令用于生成本地代理(即本地对象)。
(4)创建客户端类测试webservice接口。
设计流程如下:
当然 JAX-WS 也提供了一组针对底层消息进行操作的API调用,你可以通过Dispatch 直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。
通过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);
- @WebRe sult(name=“loginUser”)
- public User login(@WebParam(name=“username”)String username,@WebParam(name=“password”)String password);
- }
1.2 创建实现类(SBI)
MyServiceImpl.java
< /p>
- package org.zttc.service;
- import javax.jws.WebServic e;
- @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;
- impor t 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 span> 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));
- }
- }
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 服务的开发。
在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议,比如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。 JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。
一 、实现一个基于JWS的webservice项目(直接使用JWS api 实现,不借助任何webservice框架)
(1)在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(service endpoint interface),并提供相关的实现类SIB(Service implementation Bean)。
(2)通过调用JAX-WS的“服务发布接口-api”就可以将其发布为WebService接口。
(3)在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。 wsimport命令用于生成本地代理(即本地对象)。
(4)创建客户端类测试webservice接口。
设计流程如下:
当然 JAX-WS 也提供了一组针对底层消息进行操作的API调用,你可以通过Dispatch 直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。
通过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
< /p>
- 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.getMyService ImplPort();
- System.out.println(ms.minus(29,11));
- }
- }
- 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);
- }
[java] view plain copy
- 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;
- }
- }
[java] view plain copy
- 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());
- }
- }
[java] view plain copy
< /span>
- 在浏览器输入; http://localhost:8888/ns?wsdl
[java] view plain copy
- package org.zttc.service;
- import java.net.MalformedURLException;
- import
java.net.URL; - import javax.xml.namespace.QName;
- public class TestClient2 {
- /**
- * @param args
- * @throws MalformedURLExcepti on
- */
- 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”);
- MyService ImplService msis = new MyServiceImplService(url,sname);
- IMyService ms = msis.getMyServiceImplPort();
- System.out.println(ms.minus(29,11));
- }
- }
[java] view plain copy