Java中的WebService服务
一、在本地发布一个webservice服务
1、使用jdk中的 javax.xml.ws.Endpoint 类的 static Endpointpublish(Stringaddress,Objectimplementor)方法在本地发布服务
package com.ietree.webservice.firstwebservice; import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint; // @WebService(serviceName="myService",targetNamespace="http://com.ietree.webservice/") 该注解的作用是修改serviceName以及命名空间
@WebService(serviceName="myService",targetNamespace="http://com.ietree.webservice/")
public class HelloWebService { public static void main(String[] args) {
// 服务地址
String address = "http://127.0.0.1:8080/hello"; /*
* 调用静态方法Endpoint.publish创建一个系统服务
* 参数:
* address:访问地址
* implementor:实现类
*/
Endpoint.publish(address, new HelloWebService()); System.out.println("HelloWebService ready!");
} // webservice中的第一个方法
// @WebMethod(operationName="hello") 该注解的作用是修改service的方法名称
// @WebParam(name="name") 该注解的作用是修改方法参数名称
// @WebResult(name="returnMsg") 该注解的作用是修改方法返回值的名称
@WebMethod(operationName="hello")
@WebResult(name="returnMsg")
public String sayHello(@WebParam(name="name")String name){
System.out.println("Hello " + name);
return "Hello " + name;
} // webservice中的第二个方法方法
// @WebMethod(exclude=true) 该注解的作用是将指定的公用public排除发布,使用户不能访问
@WebMethod(exclude=true)
public String sayHi(){
return "Hi";
}
}
注意:在本地服务启动之后可以直接通过http://127.0.0.1:8080/hello?wsdl地址查看服务详情,通过http://127.0.0.1:8080/hello?xsd=1地址查看方法详情。
2、利用Apache CXF方式创建WebService服务
2.1 不使用注解发布WebService
首先导入cxf的jar包
package com.ietree.webservice.firstwebservice;
import org.apache.cxf.frontend.ServerFactoryBean;
public class HelloService {
public static void main(String[] args) {
// 创建ServerFactoryBean
ServerFactoryBean svrFactory = new ServerFactoryBean();
// 或者使用JaxWsServerFactoryBean生成工厂Bean功能和ServerFactoryBean一样,在使用JaxWsServerFactoryBean时不同的是,需要再Service类上加上@WebService注解
//JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
// 设置访问地址
svrFactory.setAddress("http://127.0.0.1:8080/hello");
// 设置实现类或者接口
svrFactory.setServiceClass(HelloService.class);
// 启动服务jetty内置web服务
svrFactory.create();
}
// WebService的一个方法
public String sayHi(String name){
System.out.println("Hi " + name);
return "Hi " + name;
}
}
2.2 使用注解发布WebService
首先导入CXF jar包,编写HiService类,其中使用的是JaxWsServerFactoryBean
package com.ietree.webservice.firstwebservice; import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean; public class HiWebService implements IHiWebService { public static void main(String[] args) { // 创建ServerFactoryBean
//ServerFactoryBean svrFactory = new ServerFactoryBean(); // 或者使用JaxWsServerFactoryBean生成工厂Bean功能和ServerFactoryBean一样,在使用JaxWsServerFactoryBean时不同的是,需要再Service类上加上@WebService注解
JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean(); // 设置访问地址
svrFactory.setAddress("http://127.0.0.1:8080/hi"); // 设置实现类或者接口,面向类
//svrFactory.setServiceClass(HiWebService.class);
// 设置实现类或者接口,面向接口
svrFactory.setServiceClass(IHiWebService.class); // 在使用接口方式的时候,必须通过setServiceBean方法指定实现者, 实例化Service
svrFactory.setServiceBean(new HiWebService()); // 输入日志监控,只要有访问就能监控到
svrFactory.getInInterceptors().add(new LoggingInInterceptor());
// 输出日志监控,只要有访问就能监控到
svrFactory.getOutInterceptors().add(new LoggingOutInterceptor()); // 启动服务jetty内置web服务
svrFactory.create(); System.out.println("HiWebService ready!");
} // WebService的一个方法
public String sayHi(String name){
System.out.println("Hi " + name);
return "Hi " + name;
} }
再编写HiService类的接口
package com.ietree.webservice.firstwebservice; import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService; /**
* WebService的一个方法接口
*
* @author Root
*/
//@WebService(serviceName="myService",targetNamespace="http://com.ietree.webservice/") 该注解的作用是修改serviceName以及命名空间
@WebService(serviceName="MyWebService",targetNamespace="http://com.ietree.webservice/")
public interface IHiWebService { // @WebMethod(operationName="hello") 该注解的作用是修改service的方法名称
// @WebParam(name="name") 该注解的作用是修改方法参数名称
// @WebResult(name="returnMsg") 该注解的作用是修改方法返回值的名称
// @WebMethod(exclude=true) 该注解的作用是将指定的公用public排除发布,使用户不能访问
/**
* WebService的一个方法
*
* @param name 名字参数
* @return 字符串
*/
@WebMethod(operationName="sayHi")
@WebResult(name="returnMsg")
String sayHi(@WebParam(name="pName") String name); }
Java中的WebService服务的更多相关文章
- 你真的了解JAVA中与Webservice相关的规范和实现吗?
非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JA ...
- JAVA项目中公布WebService服务——简单实例
1.在Java项目中公布一个WebService服务: 怎样公布? --JDK1.6中JAX-WS规范定义了怎样公布一个WebService服务. (1)用jdk1.6.0_21以后的版本号公布. ( ...
- 如何在SpringMVC项目中部署WebService服务并打包生成客户端
场景 某SpringMVC项目原本为一个HTTP的WEB服务项目,之后想在该项目中添加WebService支持,使该项目同时提供HTTP服务和WebService服务.其中WebService服务通过 ...
- 在ASP.NET 中调用 WebService 服务
一.webservice定义 详见 https://www.cnblogs.com/phoebes/p/8029464.html 二.在ASP.NET MVC 中调用 webservice 1:要调用 ...
- DelphiXE7中创建WebService(服务端+客户端)
相关资料: http://www.2ccc.com/news/Html/?1507.html http://www.dfwlt.com/forum.php?mod=viewthread&tid ...
- Java中使用webservice,简化开发(xfire的webservice)
首先,使用到的jar先导入项目中, xbean-spring-2.8.jar, wsdl4j-1.6.1.jar, commons-httpclient-3.0.jar, commons-codec- ...
- DelphiXE7中创建WebService(服务端+客户端) good
相关资料:http://www.2ccc.com/news/Html/?1507.html DelphiXE7新建WebService具体操作:1.打开“DelphiXE7”->“File”-& ...
- java之搭建webservice服务端
1.新建工程. 2.配置项目名称和位置. 3.得到的项目结构如下: 4.配置tomcat服务器. (1) (2)新建一个tomcat服务. (3)配置tomcat参数. 5.配置WSDL文件. url ...
- xfire配置(java中的webservice)
开发时需要在src中新建META-INF=>xfire=>services.xml 这样编译出来就在classes文件夹下. services.xml配置 <?xml version ...
随机推荐
- poolingHttpclientConnectionmanager 使用
在阅读 netflix zuul 的simpleHostRoutingFilter 中,发现了一些问题. 主要是关于poolingHttpclientConnectionmanager. 在寻找其中的 ...
- [LeetCode] Trapping Rain Water II 题解
题意 题目 思路 我一开始想的时候只考虑到一个结点周围的边界的情况,并没有考虑到边界的高度其实影响到所有的结点盛水的高度. 我们可以发现,中间是否能够盛水取决于边界是否足够高于里面的高度,所以这必然是 ...
- 玩转Node.js单元测试
代码部署之前,进行一定的单元测试是十分必要的,这样能够有效并且持续保证代码质量.而实践表明,高质量的单元测试还可以帮助我们完善自己的代码.这篇博客将通过一些简单的测试案例,介绍几款Node.js测试模 ...
- windows phone 8.1开发 onedrive操作详解
原文出自:http://www.bcmeng.com/onedrive/ 小梦今天给大家分享一下windows phone 8.1开发 onedrive中的一些操作: Windows phone 8. ...
- 【SF】开源的.NET CORE 基础管理系统 - 安装篇
[SF]开源的.NET CORE 基础管理系统 -系列导航 1.开发必备工具 IDE:VS2017 运行环境:netcoreapp1.1 数据库:SQL Server 2012+ 2.获取最新源代码 ...
- iOS开发之判断横竖屏切换
/** * 当屏幕即将旋转的时候调用 * * @param toInterfaceOrientation 旋转完毕后的最终方向 * @param duration 旋转动画所花费的时间 */ ...
- pxe+kickstart cobbler无人值守装机
环境准备: 一台服务器 [root@admin tftpboot]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [roo ...
- PRINCE2重要性--光环国际培训
项目的重要性 答:对于当今的组织来说,一个关键的挑战,就是能够成功地平衡以下两个并存的.互相竞争的方面:保持现有的商业运营--盈利能力.服务质量.客户关系.品牌忠实度.生产效率.市场信心等,这些被称为 ...
- xml转义符
今天在看项目的UrlRewriteFilter(动态url静态化,有利于搜索引擎搜索)的配置文件urlrewrite.xml时,看到了“&”字符,查询之后才知道xml文件中的转义比html中的 ...
- Linux下搭建mpi集群(ubuntu下用虚拟机测试)
一 建立SSH连接(无密码登陆) 1 SSH连接的简单介绍 SSH 为 Secure Shell 的缩写,中文翻译为安全外壳协议,建立在应用层,是一种远程连接安全协议.传统的telnet,pop,ft ...