转载自:http://blog.youkuaiyun.com/linjingj/article/details/13761465 (表示感谢!!!)
本篇主要讲解了基于JAX-WS的WebService项目的快速实现,项目文件如下:
一、服务器的建立
(1)创建接口
IMyService.java
- package org.zttc.service;
- import javax.jws.WebParam;
- import javax.jws.WebResult;
- import javax.jws.WebService;
- import javax.jws.soap.SOAPBinding;
- import javax.jws.soap.SOAPBinding.Style;
- @WebService
- /*@SOAPBinding(style=Style.RPC)
- * style:定义发送到WebService的消息和从WebService发送的消息的编码样式。Document和RPC两种形式,默认document。*/
- 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);
- }
(2)创建实现类
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;
- }
- }
(3)发布服务
SEI: Service Endpoint Interface
SIB: Service Implemention Bean
MyServer.java
- package org.zttc.service;
- import javax.xml.ws.Endpoint;
- public class MyServer {
- /**
- * http://localhost:8887/ns?wsdl
- * @param args
- */
- public static void main(String[] args) {
- String address = "http://localhost:8887/ns";
- Endpoint.publish(address, new MyServiceImpl());
- }
- }
运行MyServer中的main()方法,发布服务,可通过http://localhost:8887/ns?wsdl查看wsdl文件
二、客户端的建立
首先,我们在本地项目中创建一个客户端,测试访问,如下TestClient.java
- package org.zttc.service;
- import java.net.MalformedURLException;
- import java.net.URL;
- import javax.xml.namespace.QName;
- import javax.xml.ws.Service;
- public class TestClient {
- public static void main(String[] args) {
- try {
- //创建访问WSDL服务地址的URL
- URL url = new URL("http://localhost:8888/ns?wsdl");
- //通过QName指明服务的具体信息(<MyServiceImplService xmlns="http://service.zttc.org/">)
- QName sname = new QName("http://service.zttc.org/", "MyServiceImplService");
- //创建服务
- Service service = Service.create(url, sname);
- //实现接口
- IMyService ms = service.getPort(IMyService.class);
- System.out.println(ms.add(12, 33));
- //以上服务有问题,依然依赖于IMyService接口
- } catch (MalformedURLException e) {
- e.printStackTrace();
- }
- }
- }
实现过程中,我们会发现,实现接口的时候,IMyService ms = service.getPort(IMyService.class);依然依赖于IMyService接口,也就是依然依赖于Java代码,不能满足WebService异构平台之间的交互(跨语言、跨平台)。
2079

被折叠的 条评论
为什么被折叠?



