一、在本地发布一个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. SEO-关键词密度与友情链接交换技巧

    关键词密度 关键词密度 关键词密度与关键词频率所阐述的实质上是同一个概念,用来量度关键词在网页上出现的总次数与其他文字的比例,一般用百分比表示.相对于页面总字数而言,关键词出现的频率越高,关键词密度也 ...

  2. AVFoundation之如何从摄像头获取图像

    前言: 最近项目有个需求是对试图对手机密码进行强破解的人进行拍照(通过摄像头截图),因为之前没做过,所以一堆坑.现在就把我的经验都分享出来,希望后来人不用再踏上坑途中. 直接上代码: // 创建会话 ...

  3. PHP数据访问基础知识(20161028)

    数据访问 动态页面的特征:能够读取数据库,网页的内容都是从数据库读出来的,而不是写死的 所有的程序归根结底都是对数据的增删改查 如何用服务器的PHP来操作服务器的MySQL,Apache则是用来管理, ...

  4. _1_html_

    创:18_3_2017修:20_3_2017什么是html? 超文本标记语言 告诉浏览器内容的语义,html中包含了各种标签html页面的框架是什么? <!DOCTYPE html> #D ...

  5. [译]Selenium Python文档:目录

    作者:Baiju Muthukadan 协议:本文档采用知识共享署名 - 共享4.0国际许可. 原英文网址:http://selenium-python.readthedocs.io/index.ht ...

  6. Win10下 VS2017 安装失败 未能安装包“Microsoft.VisualStudio.AspNet45.Feature,version=15.0.26208.0”

    事情的起因是这样的,前段时间,VS2017发布当天,想在自己的Win10上安装VS2017,然而,由于自己的系统很久没有更新(PS:自己关闭了Windows更新). 安装提示:未能安装包“Micros ...

  7. Linux中的grep命令

    grep - print lines matching a pattern 参数: -a 将binary文件以text文件的方式查找 -i 忽略大小写 --color=zuto 加颜色匹配字符串 -v ...

  8. 使用Docker容器来源码编译etcd

    背景 etcd是CoreOS公司开发的分布式键值对存储库.在Kubernetes中,我们需要使用etcd作为所有REST API对象的持久化存储. 不幸的是,在github的release中,Core ...

  9. 2017-3-28 JavaScript 基础、语法

    前端三剑客:  html+css+js(html 决定网页上有什么,css决定东西是怎么摆放的,js决定东西的功能) js定义: js是一个脚本语言,需要有宿主文件,它的宿主文件是html文件. js ...

  10. 模拟退火算法(SA)求解TSP 问题(C语言实现)

    这篇文章是之前写的智能算法(遗传算法(GA).粒子群算法(PSO))的补充.其实代码我老早之前就写完了,今天恰好重新翻到了,就拿出来给大家分享一下,也当是回顾与总结了. 首先介绍一下模拟退火算法(SA ...