mvn构建JAX-WS项目含服务端和客户端代码实现
java中WebService框架有很多,像Axis,XFire,CXF等,除了上述框架外,JDK中自带JAX-WS框架。相比而言,JWS是轻量级的,使用非常简便,可与Spring集成使用。 下面就详述如何通过mvn构建WebService服务端及客户端。 1.引包。在mvn项目的pom文件中加入依赖包 <dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.8</version>
</dependency>
引完包后记得重新构建项目,命令方式如下 mvn eclipse:eclipse -Dwtpversion=2.0 -DdownloadSources=true
2.写服务端代码,举Hello服务类如下@WebService
public class Hello {
@WebMethod
public String sayHello(@WebParam(name = "name") String name) {// @WebParam来指定wsdl文件schema的参数名称,而不是显示为arg0,arg1等,以增加可读性
return String.format("Hello,%s",name);
}
}
上面通过注解@WebService表明这是一个WebService类,其中注解@WebMethod、@WebParam非必需。 3.服务发布有两种方式发布自己的WebService
public static void main(String[] args) {
Endpoint.publish("http://localhost/HelloService",new Hello());
}
直接通过Endpoint.publish方式进行WebService发布,一般用作调试。运行该类后在浏览器访问http://localhost/HelloService如下图
发布到web容器中。下面以tomcat为例说明发布配置过程 <?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint name="HelloService" implementation="com.gvtv.learn.ws.server.Hello" url-pattern="/HelloService" />
<!-- url-pattern需要与web.xml中对应的servlet的url-pattern一致 -->
</endpoints>
然后修改web.xml,增加Listener和Servlet如下: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:conf/spring-*.xml</param-value>
</context-param>
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>SayHiService</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SayHiService</servlet-name>
<url-pattern>/HelloService</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:conf/springMVC-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
注解sun-jaxws.xml中的url-pattern需要与web.xml中的servlet的url-pattern一致,如上例都为/HelloService(可任意取值)。 4.java客户端调用可利用JDK自带的wsimport工具生成基础代码 一、cmd界面下切换到项目的srcmainjava目录下二、执行命令xxxsrcmainjava>wsimport -encoding utf-8 -keep -d . -p com.gvtv.learn.ws.client http://localhost/jquery_ui/HelloService?wsdl
wsimport用法如下: 用法: wsimport [options] <WSDL_URI> 其中 [options] 包括: -d <directory> 指定放置生成的输出文件的位置 -encoding <encoding> 指定源文件所使用的字符编码 -help 显示帮助 -keep 保留生成的文件(指保留java源文件) -p <pkg> 指定目标程序包名 此时,在包com.gvtv.learn.ws.client下可看见生成的源文件如下 三、利用上面生成的java源文件调用web服务。示例如下:public class Main {
public static void main(String[] args) {
Hello service = new HelloService().getHelloPort();
String result = service.sayHello("屌丝!");
System.out.println(result);
}
}
可看到打印出信息 Hello,屌丝!
至此,java版的WebService服务端和客户端就完成了,过程非常简单。下次补充下其它知识点 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- BootStrap中关于Select下拉框选择触发事件及扩展
- angularjs – 如何加载页面之间通用和动态的角度模块?
- 缩小Angular 2 rc1
- 如何将AngularJS变量传递给Javascript?
- 别责怪框架:我使用 AngularJS 和 ReactJS 的经验
- Angular.js与Bootstrap相结合实现表格分页代码
- 2 counts of IllegalAnnotationExceptions
- Angular 5 EmptyError:在创建子路由时没有顺序元素
- 谈谈WebService开发-应用篇(二)-基于CXF-天气预报
- docker-compose不会覆盖dockerfile环境变量