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 ...
随机推荐
- MySQL创建数据库与创建用户以及授权
1.create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和c ...
- 给 Qt 添加模块
添加 Qt 模块 QtCanvas3D 由于需要使用 Qt Quick 进行 3D 绘图,因此在网上找了一些资料. JS 绘制 3D 的有 ThreeJS 库,应该可以用于 QML.继续搜索,发现Qt ...
- IPhone 、Webkit手机浏览器Div滚动、滑动卡,遮罩层被穿透的解决办法
在滚动条的层上面加上-webkit-overflow-scrolling:touch;样式即可解决!
- 【记录】解析具有合并单元格的Excel
最近公司让做各种数据表格的导入导出,就涉及到电子表格的解析,做了这么多天总结一下心得. 工具:NOPI 语言:C# 目的:因为涉及到导入到数据库,具有合并单元格的多行必然要拆分,而NPOI自动解析的时 ...
- 基于原生js的返回顶部组件,兼容主流浏览器
基于原生js的返回顶部插件,兼容IE8及以上.FF.chrome等主流浏览器. js文件中封装了getScrollTop()和changeScrollTop()函数分别用于获取滚动条滚动的高度和修改滚 ...
- MySQL大数据量分页查询
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...
- 动态代理的两种实现方式(JDK/Cglib)
=========================================== 原文链接: 动态代理的两种实现方式(JDK/Cglib) 转载请注明出处! ================== ...
- 判断是否是IE(包含IE11)
判断是否是IE(包含IE11) if(!!window["ActiveXObject"] || "ActiveXObject" in window) { ale ...
- Xmpp实现简单聊天系列 --- ①openfire部署
1. 下载最新的openfire安装文件 官方下载站点:http://www.igniterealtime.org/downloads/index.jsp#openfire 2. 下载完成后,执行你的 ...
- JavaWeb总结(一)—Servlet
一.Servlet生命周期 1.Servlet生命周期 Serlet加载---->实例化---->服务---->销毁 2.init() Servlet容器启动时:读取web.xml配 ...