您的位置:首页 > 编程语言 > Java开发

利用jaxws创建service 和 client 简单方法

2016-04-13 11:55 519 查看
撸主之前写过一篇关于使用jdk内置工具:wsgen wsimport 生成 jaxws 的service 和 client。这几天一直在倒腾webservice, 谁料用公司的eclipse 版本很容易很简单的创建service并成功启动服务访问wsdl,但是家里的eclipse版本怎么倒腾都不能成功访问到service
端生成的wsdl ,总是报IOException,大概意思是没有wsdl 的输出口, 我一会怀疑是版本冲突, 但是网上搜索一直找不到, 折腾了2个晚上, 玛德,果断放弃, 晚上睡觉都要气炸的节奏。。。

今天抽时间试了试,重新启一个eclipse 进程, 然后按照上一篇jaxws 生成service 的教程,结果很完美, 我很欣慰, 同时偶然发现, wsimport 能够利用service 端http 协议的wsdl 生成client所需要的东西(其实是我一直没有理解jaxws的原理-_-||),‘新大陆’如是:

新建 maven web project

1、实体类:

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class Hello {

@WebMethod
public String sayHello(String name){
return "Hello, "+name;
}
}2、在WEB-INF下新建2个配置文件:
sun-jaxws.xml:

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'
version='2.0'>
<endpoint name='Hello' implementation='com.example.soap.Hello'
url-pattern='/HelloService' />
</endpoints>web.xml:
<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/HelloService</url-pattern>
</servlet-mapping>
</web-app>3、在pom.xml中添加对jaxws 依赖:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.10</version>
</dependency>4、将该项目装入web 容器(tomcat、或者插件)启动成功后, 访问http://localhost:8080/YourProjectName/HelloService,如图:



点开wsdl 链接, 出现下图, 说明已经成功:



5、新建一个java project, 作为webservice 的client:

client 通过wsdl 生成访问service所需要的类,这个wsdl来源 可以是磁盘文件或者网络文件,撸主要通过网络文件wsdl 生成client:

在cmd 命令行中, 切到client 的根目录中,执行:

wsimport -s <generate your source file location> http://localhost:8080/YourProjectName/HelloService?wsdl
6、新建访问service 服务的类:

public class JaxwsClientTest {

public static void main(String[] args) {
HelloService service = new HelloService();
Hello serviceProxy = service.getHelloPort();
System.out.println(serviceProxy.sayHello("drew.jhung"));
}
}
控制台已经成功输出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息