`

基于jdk规范的webservice

    博客分类:
  • java
 
阅读更多

      最近在项目中使用webservice连接调用其他系统的接口,自己学习了一下webservice。demo如下

1.基于jdk1.6以上jdk自带的webservice,我们在jdk安装目录下的bin目录下可以看到wsimport.exe的文件,这个文件就是用于webservice的,在命令行输入wsimport我们会看到



 下面是webservice接口

@WebService
public interface WebServiceServer {
	
	public void sayService();
	
	public void sayService(String name);
	
}

 webservice服务端实现类

@WebService
//@SOAPBinding(style=Style.RPC)
public class WebServiceServerImpl implements WebServiceServer {

	@Override
	@WebMethod(exclude=true)
	public void sayService() {
		System.out.println("此方法不开放");
	}

	@Override
	public void sayService(String name) {
		System.out.println("Hi, I'm " + name);
	}

}

 发布接口

public class Server {
	private final static  String ADDR = "http://localhost:8888/testWebService/helloWorld";
	
	public static void main(String[] args) {
		WebServiceServer server = new WebServiceServerImpl();
		Endpoint.publish(ADDR, server);
	}
}

 此处localhost表示本机,如果在不同机器上使用改为对应的ip地址

发布后访问地址



 点击右边的URL?wsdl就可以看到对应的webservice报文信息了



 接着我们可以在命令行使用命令生成客户端代码了

wsimport -s . -p com.share.server  http://localhost:8888/testWebService/helloWorld?wsdl

生成代码



 将.class文件删除即可:

接着客户端代码

public class WebClient {

	public static void main(String[] args) {
		WebServiceServerImpl ws = new WebServiceServerImplService().getWebServiceServerImplPort();
		ws.sayName("张三");
	}
}

 输出 Hi, I'm 张三  则调用成功

 

2.基于cxf的

首先我们需要下载Apache-cxf,然后解压配置环境变量,接着查看里面的示例,我们从lib包中选择

asm-3.3.1.jar

cxf-2.6.2.jar

geronimo-servlet_2.5_spec-1.1.2.jar

neethi-3.0.2.jar

wsdl4j-1.6.2.jar

xmlschema-core-2.0.3.jar

jetty-continuation-7.5.4.v20111024.jar

jetty-http-7.5.4.v20111024.jar

jetty-io-7.5.4.v20111024.jar

jetty-security-7.5.4.v20111024.jar

jetty-server-7.5.4.v20111024.jar

jetty-util-7.5.4.v20111024.jar

下面直接上代码

接口

@WebService
public interface IBirthAddr {
	public String getBirthAddr1(String addr);
}

 实现类

@WebService(endpointInterface="com.share.server_cxf.IBirthAddr")
public class BirthAddrImpl implements IBirthAddr {

	@Override
	public String getBirthAddr1(String addr) {
		return "我出生于:" + addr;
	}

}

 发布类

public class Publish {
	
	public static void main(String[] args) {
		testJaxwsServerFactoryBean();
	}
public static void testJaxwsServerFactoryBean() {
		// 1.创建ServerFactoryBean的对象,用于发布服务
		JaxWsServerFactoryBean server = new JaxWsServerFactoryBean();
		// 2.设置服务发布地址
		server.setAddress("http://192.168.1.100:9999/ws_cxf1");
		// 3.设置服务发布的接口
		server.setServiceClass(IBirthAddr.class);
		// 4.设置服务的发布对象
		server.setServiceBean(new BirthAddrImpl());
		// 5.使用create方法发布服务
		server.create();
		System.out.println("cxf");
		
	}
}

 另外你导入cxf文件夹下的lib的全部包注意

需要添加

Stax2-api-3.1.4.jar  woodstox-core-asl-4.4.1.jar否则报错

删除:cxf-services-ws-discovery-api-3.1.4.jar
cxf-services-ws-discovery-service-3.1.4.jar
cxf-services-wsn-api-3.1.4.jar
cxf-services-wsn-core-3.1.4.jar

 

四个包

否则报错

客户端生成代码命令

wsdl2java -d . -p com.share.server http://192.168.1.100:9999/ws_cxf1?wsdl

-d表示当前目录 -d 与 . 之间有空格 

-p 指定包名 

注意jdk与cxf的版本问题,否则wsdl2java命令不能使用

 

生成的文件如下:

客户端调用代码

public class Call {
	public static void main(String[] args) {
		testClientProxyFactoryBean();
	}
	
	public static void testClientProxyFactoryBean() {
//  	1.创建ClientProxyFactoryBean的对象,用于接收服务
		JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();
//  	2.设置服务的发布地址,表示去哪里过去服务
  	 	bean.setAddress("http://192.168.1.3:9998/ws_cxf1");
//  	3.设置服务的发布接口,使用本地的代理接口
  	 	bean.setServiceClass(IBirthAddr.class);
//  	4.通过create方法返回接口代理实例
  	 	IBirthAddr ws = (IBirthAddr) bean.create();
//  	5.调用远程方法
  	 	System.out.println(ws.getBirthAddr1("上海"));
	}
}

 
 打印 :我出生于:上海成功

  • 大小: 30.5 KB
  • 大小: 24 KB
  • 大小: 39.2 KB
  • 大小: 28.2 KB
  • 大小: 4.9 KB
分享到:
评论

相关推荐

    WebService一——使用JDK开发WebService

    【WebService一——使用JDK开发WebService】 WebService是一种基于XML(Extensible Markup Language)的网络服务标准,它允许不同系统间的应用程序进行交互,不受操作系统、编程语言的限制。本篇文章将探讨如何使用...

    使用JDK开发WebService

    总的来说,使用JDK开发WebService涉及到了Java编程、JAX-WS规范、XML以及Eclipse的使用技巧。掌握这些知识点,开发者可以灵活地创建和使用Web服务,实现跨平台、跨语言的数据交换。通过实际操作和实验,你可以加深...

    Webservice入门教程_用JDK开发Webservice示例代码

    Webservice是一种基于网络的、开放式的信息交换标准,它允许不同系统之间进行数据交换,实现应用程序之间的互操作性。本教程将带你入门Webservice的开发,特别聚焦于使用JDK(Java Development Kit)来构建...

    jdk自动生成webservice

    Web服务是一种基于标准的、平台无关的通信机制,允许不同系统之间交换数据。 **1. JAX-WS概述** JAX-WS是Java平台上的Web服务规范,用于简化SOAP(Simple Object Access Protocol)Web服务的开发。它替代了早期的...

    jdk6 开发webservice

    JDK 6引入了JAX-WS(Java API for XML Web Services),它是一个标准的、基于注解的框架,简化了Web Service的开发流程。以下是对标题和描述中涉及的知识点的详细说明: 1. **JAX-WS**: JAX-WS是Java平台的一个核心...

    JDK1.6支持WebService

    4. **Metro**:Metro是Sun Microsystems(现已被Oracle收购)提供的一个基于JAX-WS的实现,它是JDK 1.6中的默认Web服务堆栈。Metro提供了一整套工具和服务,包括WSDL(Web Services Description Language)生成器、...

    快速实现一个基于jws的webservice项目

    在这个“快速实现一个基于jws的webservice项目”的教程中,我们将探讨如何利用JWS来构建一个Web服务。 首先,理解Web服务的基本概念至关重要。Web服务通常基于SOAP(Simple Object Access Protocol)或REST...

    webservice接口调用demo(含jar包和调用代码)

    首先,Web Service是一种基于开放标准的、平台和语言无关的通信协议,它允许不同系统间的应用程序进行交互。在本示例中,我们将探讨如何使用CXF库来调用Web Service接口。 【描述】中提到的"CXF方法"是指Apache CXF...

    WebService(一):JDK WEB服务API实现

    WebService是一种基于XML的协议,它定义了服务提供者和服务消费者之间的通信规范。最常用的标准是SOAP(Simple Object Access Protocol),用于传输数据,以及WSDL(Web Services Description Language)用于描述...

    基于axis做webservice

    Axis支持JAX-RPC(Java API for XML-based Remote Procedure Calls)规范,使得开发者可以轻松地在Java应用中实现Web服务。 三、安装与配置Axis 1. 下载Apache Axis:访问官方网站获取最新版本的Axis发行版。 2. ...

    jdk6 jboss5 webservice bug

    标题中的“jdk6 jboss5 webservice bug”指的是在Java Development Kit (JDK) 版本6和JBoss Application Server (AS) 版本5中出现的一个与Web服务(WebService)相关的错误。Web服务是一种在分布式环境中交换数据和...

    java webservice 详细开发示例介绍

    除了JAX-WS之外,Java中还有另外两个规范也用于处理基于SOAP的WebService:JAXM(Java API for XML Messaging)和SAAJ(SOAP with Attachments API for Java)。 1. **JAXM**:主要定义了发送和接收消息所需的API,...

    java的webservice支持

    综上所述,Java提供了多种规范和技术来支持WebService的开发,包括基于SOAP的JAX-WS和JAXM & SAAJ,以及基于RESTful风格的JAX-RS。这些技术各有侧重,开发者可以根据实际需求选择最适合的技术栈。同时,Apache CXF...

    JAVA 的WebService 支持

    - **定义**:JAX-WS(Java API for XML Web Services)是JDK 1.6自带的WebService规范之一,版本为2.1,底层支持为JAXB。 - **演进**:JAX-WS是JAX-RPC(Java API for XML Remote Procedure Call)的后续版本,JAX-...

    JAVA6开发WebService JWS示例

    JAX-WS 是一种基于 XML 的 WebService 规范,JDK1.6 自带的版本为 JAX-WS2.1,其底层支持为 JAXB。 JAX-WS JAX-WS 是 JAVA 中的一种 WebService 规范,早期的 JAVA Web 服务规范 JAX-RPC(Java API For XML-Remote...

    WebService的几种不同实现方式

    在Java中,主要存在三种WebService实现规范: 1. JAX-WS(Java API for XML-Web Services):JAX-WS是目前常用的Java Web服务实现,它基于SOAP协议。JDK1.6中自带的是JAX-WS2.1版本,底层支持使用JAXB。JAX-WS替代...

    Java WebService入门实例

    Java WebService 是一种基于标准协议(如SOAP,WSDL)的跨平台、跨语言的通信机制,用于构建可互操作的分布式系统。本篇将详细介绍Java WebService的入门实例,包括其工作原理以及如何创建和测试一个简单的...

    基于Webservice的信息查询系统.docx

    ### 基于Webservice的信息查询系统 #### 一、Webservice相关模型及理论 ##### 1.1 Webservice介绍 Webservice本质上是一种遵循特定标准(如SOAP、XML、WSDL和UDDI等)的应用程序接口(API)或组件,它们能够通过...

    webservice

    这些文件包括WSDL(Web Services Description Language)文件,它是服务的规范说明,以及服务器端的部署类。 ```bash wsimport -keep -s src -p com.example HelloWorld.java ``` 4. **启动服务**:将生成的服务...

    Java WebService 简单实例 方式一(生成类文件方式)

    通过上述步骤,我们已经成功创建了一个基于 Java 的 WebService,并学习了如何通过生成类文件的方式来进行开发。这种方式不仅易于理解,而且非常适用于实际项目中的需求。随着技术的发展,尽管 RESTful API 的流行度...

Global site tag (gtag.js) - Google Analytics