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) {
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为例说明发布配置过程
在WEB-INF目录下新建sun-jaxws.xml文件(该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="HelloService" implementation="com.gvtv.learn.ws.server.Hello"
url-pattern="/HelloService" />
</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(可任意取值)。
启动tomcat后浏览器中输入网址:http://localhost/jquery_ui/HelloService?wsdl(jquery_ui是本人的项目名),如看到wsdl文件则表明服务发布成功
4.java客户端调用
可利用JDK自带的wsimport工具生成基础代码
一、cmd界面下切换到项目的src\main\java目录下
二、执行命令
xxx\src\main\java>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服务端和客户端就完成了,过程非常简单。下次补充下其它知识点
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
###Building/Deploying 通过运行mvn install构建项目。 通过运行mvn jboss-as:deploy将项目部署到本地 JBoss。 ###运行测试使用 URL http://localhost:8080/hello/test?count=10&thread=5调用测试。 count可以是...
JAX-WS发布webservice例子,基于http://blog.csdn.net/yy_love_my/article/details/44938329所说的做的一个简单且能运行的列子,基于maven工程,如果使用servlet发布方式,执行命令:mvn tomcat7:run
电子商务-WS ... 它在 Maven 构建期间使用该项目。 要将 jar 安装到 Maven 存储库中,请使用: mvn install:install-file -Dfile= -DgroupId=<com> -DartifactId=电子商务共享 -Dversion=1.1 -Dpackaging=jar
mvnjaxws 一个准系统的jax-ws maven项目。 建造 mvn package需要maven-
maven2书中代码 mvn-examples-1.0 全部代码。
该项目包括 4 个资源类:2 个每个请求范围和 2 个单例。 两个只是返回一个查询参数。 在另外两个资源中,我们将通过@Context 注入 UriInfo。 上下文特定于特定请求。 因此,在请求范围的资源上,它可以在创建时注入...
前庭损伤急性期低血压诱发MVN区c-Fos表达的NMDA受体机制,金燕,李香兰,[目的]破坏大鼠一侧前庭器官48h后,在清醒动物诱发急性低血压时利用免疫组化法,观察了MVN区c-Fos蛋白的表达情况,并用药理学方法探�
mvn-repo-cleaner -Maven资源库清理器是用于清理开发人员盒上本地.m2目录的实用程序。 随着新版本的从属库出现,旧的库已过时并且永远不会被清除。 该程序通过删除下载到.m2目录的旧版本库来帮助释放一些磁盘空间。...
NULL 博文链接:https://swanmarx.iteye.com/blog/1778928
maven常用指令大全Maven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName ...4. 编译测试代码:mvn test-compile 5. 运行测试:mvn test 6. 产生site:mvn site
maven权威指南高清版 mvn-examples-1.0.zip MAVEN权威指南对应示例代码
带有 JAX-RS 的 RESTful Web 服务 带有 JAX-RS 的基本 RESTful Web 服务 ... 使用提供的 build.sh 脚本构建映像 、 和 使用启动容器 使用 maven 部署 $ mvn wildfly:deploy -Dwildfly.username=admin -Dwildfly.passw
mvn clean install --> 运行清理和安装,会将打好的包安装到本地仓库中,一边其他的项目可以调用 mvn clean deploy --> 运行清理和发布(发布到私服上面) mvn jetty:run -->启动服务 启动服务器:先进入工作区间...
Cmd执行mvn clean package 命令使用文档
Swagger Maven插件 这个插件使您的Swagger注释项目可以在maven构建阶段生成Swagger规范和可自定义的模板化静态文档。 与swagger-core不同,swagger-maven-plugin不会在其余应用程序中主动满足规范要求。 它将规范...
将 Apache CXF 和 JAX-RS 用于 REST-ful Web 服务的简单示例。 只是一个闲逛的地方,用于对 Kuali Rice 团队进行一些培训和讨论。 运行项目 您可以从命令行(如果安装了 Maven)或从 IDE 启动应用程序。 要使用 ...
mvn-parent-projects:该项目包含父项目,这些父项目具有特定项目的常规属性
mvn-p2-依赖 这将通过搜索指定的本地 maven 存储库列出给定 p2 功能具有的所有功能依赖项。 用法 java -jar lib/mvn-p2-dependencies-1.0-SNAPSHOT-jar-with-dependencies.jar -repo /Users/ruchira/.m2/repository...