一、在本地发布一个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服务的更多相关文章

  1. 你真的了解JAVA中与Webservice相关的规范和实现吗?

    非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JA ...

  2. JAVA项目中公布WebService服务——简单实例

    1.在Java项目中公布一个WebService服务: 怎样公布? --JDK1.6中JAX-WS规范定义了怎样公布一个WebService服务. (1)用jdk1.6.0_21以后的版本号公布. ( ...

  3. 如何在SpringMVC项目中部署WebService服务并打包生成客户端

    场景 某SpringMVC项目原本为一个HTTP的WEB服务项目,之后想在该项目中添加WebService支持,使该项目同时提供HTTP服务和WebService服务.其中WebService服务通过 ...

  4. 在ASP.NET 中调用 WebService 服务

    一.webservice定义 详见 https://www.cnblogs.com/phoebes/p/8029464.html 二.在ASP.NET MVC 中调用 webservice 1:要调用 ...

  5. DelphiXE7中创建WebService(服务端+客户端)

    相关资料: http://www.2ccc.com/news/Html/?1507.html http://www.dfwlt.com/forum.php?mod=viewthread&tid ...

  6. Java中使用webservice,简化开发(xfire的webservice)

    首先,使用到的jar先导入项目中, xbean-spring-2.8.jar, wsdl4j-1.6.1.jar, commons-httpclient-3.0.jar, commons-codec- ...

  7. DelphiXE7中创建WebService(服务端+客户端) good

    相关资料:http://www.2ccc.com/news/Html/?1507.html DelphiXE7新建WebService具体操作:1.打开“DelphiXE7”->“File”-& ...

  8. java之搭建webservice服务端

    1.新建工程. 2.配置项目名称和位置. 3.得到的项目结构如下: 4.配置tomcat服务器. (1) (2)新建一个tomcat服务. (3)配置tomcat参数. 5.配置WSDL文件. url ...

  9. xfire配置(java中的webservice)

    开发时需要在src中新建META-INF=>xfire=>services.xml 这样编译出来就在classes文件夹下. services.xml配置 <?xml version ...

随机推荐

  1. poolingHttpclientConnectionmanager 使用

    在阅读 netflix zuul 的simpleHostRoutingFilter 中,发现了一些问题. 主要是关于poolingHttpclientConnectionmanager. 在寻找其中的 ...

  2. [LeetCode] Trapping Rain Water II 题解

    题意 题目 思路 我一开始想的时候只考虑到一个结点周围的边界的情况,并没有考虑到边界的高度其实影响到所有的结点盛水的高度. 我们可以发现,中间是否能够盛水取决于边界是否足够高于里面的高度,所以这必然是 ...

  3. 玩转Node.js单元测试

    代码部署之前,进行一定的单元测试是十分必要的,这样能够有效并且持续保证代码质量.而实践表明,高质量的单元测试还可以帮助我们完善自己的代码.这篇博客将通过一些简单的测试案例,介绍几款Node.js测试模 ...

  4. windows phone 8.1开发 onedrive操作详解

    原文出自:http://www.bcmeng.com/onedrive/ 小梦今天给大家分享一下windows phone 8.1开发 onedrive中的一些操作: Windows phone 8. ...

  5. 【SF】开源的.NET CORE 基础管理系统 - 安装篇

    [SF]开源的.NET CORE 基础管理系统 -系列导航 1.开发必备工具 IDE:VS2017 运行环境:netcoreapp1.1 数据库:SQL Server 2012+ 2.获取最新源代码 ...

  6. iOS开发之判断横竖屏切换

    /** *  当屏幕即将旋转的时候调用 * *  @param toInterfaceOrientation 旋转完毕后的最终方向 *  @param duration  旋转动画所花费的时间 */ ...

  7. pxe+kickstart cobbler无人值守装机

    环境准备: 一台服务器 [root@admin tftpboot]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [roo ...

  8. PRINCE2重要性--光环国际培训

    项目的重要性 答:对于当今的组织来说,一个关键的挑战,就是能够成功地平衡以下两个并存的.互相竞争的方面:保持现有的商业运营--盈利能力.服务质量.客户关系.品牌忠实度.生产效率.市场信心等,这些被称为 ...

  9. xml转义符

    今天在看项目的UrlRewriteFilter(动态url静态化,有利于搜索引擎搜索)的配置文件urlrewrite.xml时,看到了“&”字符,查询之后才知道xml文件中的转义比html中的 ...

  10. Linux下搭建mpi集群(ubuntu下用虚拟机测试)

    一 建立SSH连接(无密码登陆) 1 SSH连接的简单介绍 SSH 为 Secure Shell 的缩写,中文翻译为安全外壳协议,建立在应用层,是一种远程连接安全协议.传统的telnet,pop,ft ...