利用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"));
}
}
控制台已经成功输出!
端生成的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"));
}
}
控制台已经成功输出!
相关文章推荐
- maven学习
- maven插件maven-war-plugin的使用
- jenkins------部署项目到jboss eap下
- maven使用经验集
- MyEclipse Web Project转Eclipse Dynamic Web Project
- Windows Clang开发环境备忘
- 傻瓜式用Eclipse连接MySQL数据库
- Eclipse引入jquery报错如何解决
- 让Flex Builder 3.0与Eclipse3.4整合起来
- Eclipse配置Javascript开发环境图文教程
- 使用zend studio for eclipse不能激活代码提示功能的解决办法
- 图解Eclipse j2ee开发环境的搭建过程
- php的webservice的wsdl的XML无法显示问题的解决方法
- 两种Eclipse部署动态web项目方法
- ext for eclipse插件安装方法
- 在PHP中利用wsdl创建标准webservice的实现代码
- 解决Fedora14下eclipse进行android开发,ibus提示没有输入窗口的方法详解
- eclipse导入jquery包后报错的解决方法
- Eclipse 格式化代码时不换行与自动换行的实现方法
- Eclipse下jQuery文件报错出现错误提示红叉