`
guzizai2007
  • 浏览: 358796 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAX-WS学习(一)、哈你妹

 
阅读更多

1、开发环境: 

1)、jdk1.6+;
2)、JAX-WS RI 2.2.7(http://jax-ws.java.net/2.2.7/JAXWS2.2.7-20120813.zip),下载完直接解压至本地。

2、第一个WebService(服务端):

    1)、先写一个服务端类:

package com.sxit.first;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class HelloWorldService {
    
    @WebMethod
    public String say(String name){
        return "Hello :" + name;
    }
    
}
@WebService是声明这是一个WebService服务。  
@WebMethod是表示此为公布给外部的soap方法,有两个参数,一个input为String,一个output为String。

 

   2)、把这个服务部署到tomcat中:新增加一个sun-jaxws.xml文件放在WEB-INF中,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'
    version='2.0'>
    <endpoint name='FirstHelloWorld' implementation='com.sxit.first.HelloWorldService'
        url-pattern='/FirstHelloWorldService' />
</endpoints>   
注意:sun-jaxws.xml这个文件里是配置webservice服务的相关信息。

 

    3)、配置web.xml文件,加入监听器和servlet:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
    <listener>
         <listener-class> 
            com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
        </listener-class>
    </listener>
    <servlet>
        <servlet-name>FirstHelloWorld</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>FirstHelloWorld</servlet-name>
        <url-pattern>/FirstHelloWorldService</url-pattern>
    </servlet-mapping>
</web-app>
注意:这里需要配置一个监听器,servlet的名字、访问路径要和之前sun-jaxws.xml配置的endpoint name、url-pattern一致。
 

    4)、最后项目结构是这样的,启动tomcat访问http://localhost:8080/ws/FirstHelloWorldService:



 

3、现在写一个客户端来调用发布好webservice:

    1)、首先是得到webservice服务描述信息的地址(也就是wsdl,webservice describle language,web服务描述语言):

               路径为:http://localhost:8080/Service/FirstHelloWorldService?wsdl

 

    2)、通过wsgen服务端可生成服务的wsdl文件:

E:\Workspaces\ws\WebRoot\WEB-INF>wsgen -cp E:\Workspaces\ws\WebRoot\WEB-INF\classes com.sxit.first.HelloWorldService -wsdl -d E:\tmp\ws -s E:\tmp\ws -verbose
-cp 是指在classpath下寻找服务类 
-d  是指编译后的文件(class)目录
-s  生成的本地代码(java)目录 
-wsdl  生成wsdl文件

 

    3)、客户端通过以上两种方式取得wsdl文件,保存在E:/tmp/ws目录下,然后通过wsimport命令来生成本地代码:

E:\tmp\ws>wsimport -keep -d src -s src HelloWorldServiceService.wsdl
parsing WSDL...
generating code...
compiling code...
-d 是指编译后的class文件目录
-s 是指源代码目录

    4)、最后可以在src目录下看到生成好的本地代码:
   5)、把生成的service类中的file开头的wsdl路径全部换成之前的http://localhost:8080/Service/FirstHelloWorldService?wsdl,写一个客户端类:
package com.sxit.first;
/**
 *@功能:客户端
 *@作者: smile
 *@时间:2013-3-6 下午1:41:11
 *@版本:1.0
 */
public class client {
    public static void main(String[] args) {
        
        HelloWorldServiceService service = new HelloWorldServiceService();
        System.out.println(service.getHelloWorldServicePort().say("sb"));
    }
}
    6)、启动之前的那个服务,然后执行客户端,可以看到会打印出 hello sb;
    1)、在WEB-INF中新建一个binding.xml:
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" wsdlLocation="HelloWorldServiceService.wsdl"
    xmlns="http://java.sun.com/xml/ns/jaxws">
    <bindings node="wsdl:definitions">
        <enableAsyncMapping>true</enableAsyncMapping>
    </bindings>
</bindings> 
   2)、重新执行wsimport命令:
E:\Workspaces\Service\WebRoot\WEB-INF>wsimport -b binding.xml -s src HelloWorldS
erviceService.wsdl
    3)、客户端代码(轮询式):
package com.sxit.first;

import javax.xml.ws.Response;

/**
 *@功能:异步调用客户端(轮询式)
 *@作者: smile
 *@时间:2013-3-6 下午2:25:36
 *@版本:1.0
 */
public class Client {

	public static void main(String[] args) {
		
		HelloWorldServiceService service = new HelloWorldServiceService();
		HelloWorldService port = service.getHelloWorldServicePort();
		
		Response<SayResponse> sayAsync = port.sayAsync("sb");
		while (!sayAsync.isDone()) {
            System.out.println("is not down");
        }
		
		try {
            SayResponse callNameResponse = sayAsync.get();
            String message = callNameResponse.getReturn();
            System.out.println(message);
        } catch (Exception ex) {
        	
        }
	}
}
    4)、CallBack回调式:
package com.sxit.first;

import java.util.concurrent.ExecutionException;

import javax.xml.ws.AsyncHandler;
import javax.xml.ws.Response;

public class CallBackClient {

	public static void main(String[] args) throws Exception {
		
		HelloWorldServiceService service = new HelloWorldServiceService();
		HelloWorldService port = service.getHelloWorldServicePort();
		
		port.sayAsync("sb", new AsyncHandler<SayResponse>() {
			
			@Override
			public void handleResponse(Response<SayResponse> res) {
				try {
					SayResponse response = null;
					response = res.get();
					String message = response.getReturn();
					System.out.println(message);
				} catch (InterruptedException e) {
					e.printStackTrace();
				} catch (ExecutionException e) {
					e.printStackTrace();
				}
			}
		});
		Thread.sleep(1000);
	}

}
  • 大小: 24.2 KB
  • 大小: 74.4 KB
  • 大小: 71.5 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    jax-rs jax-ws所需包,亲测可用

    `javax.xml.ws.Service`是JAX-WS规范的一部分,用于创建和实例化Web服务客户端。当这个类报错,通常是因为缺失了如wsimport工具或者相关的API依赖。而这个压缩包提供了解决这个问题的解决方案,用户只需将提供的四个...

    Jax-ws所需要的JAR包

    这一步骤对于那些没有内置JAX-WS支持的轻量级应用服务器,如Tomcat来说尤其重要。 在实际应用中,使用JAX-WS进行Web服务开发时,开发者需要定义服务接口和实现,然后通过注解或部署描述符来配置服务。服务可以通过...

    jax-ws api jar包

    JAX-WS(Java API for XML Web Services)是Java平台标准版(Java SE)和企业版(Java EE)的一部分,它为创建、部署和消费基于SOAP(Simple Object Access Protocol)的Web服务提供了全面的支持。JAX-WS允许开发者...

    解决weblogic部署JAX-WS需要的配置文件

    JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和部署Web服务。WebLogic作为一款强大的Java EE应用服务器,支持JAX-WS标准,但正确配置和部署这些服务需要一些额外的步骤。本指南将详细...

    JAX-WS2.0 API

    JAX-WS(Java API for XML Web Services)2.0 API 是Java平台上的一个标准接口,用于创建和消费Web服务。它提供了一种简单、类型安全且与平台无关的方式来实现基于SOAP(Simple Object Access Protocol)的Web服务。...

    如何基于JAX-WS开发一个WebService实例

    JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务。本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式...

    一个包含jax-ws和jax-rs的例子(含服务端和客户端)

    标题中的“一个包含jax-ws和jax-rs的例子(含服务端和客户端)”是指这是一个示例项目,它演示了如何使用Java API for XML Web Services (JAX-WS)和Java API for RESTful Web Services (JAX-RS)来创建和消费Web服务。...

    jax-ws webservice demo

    基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...

    JAX-WS2.1用户指南

    JAX-WS(Java API for XML Web Services)是Java平台上用于创建Web服务的标准API,版本2.1是其一个重要里程碑。本指南将深入探讨JAX-WS 2.1的核心概念、功能以及如何在实际开发中应用它。以下是对JAX-WS 2.1的详细...

    JAX-WS API, JAX-RS API

    Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更方便地实现基于SOAP...

    webservice之jax-ws

    JAX-WS,全称为Java API for XML Web Services,是Java平台上的一个标准,用于构建和部署基于SOAP(Simple Object Access Protocol)的Web服务。它是Java SE和Java EE平台的一部分,简化了开发人员在Web服务领域的...

    metro-jax-ws-jaxws221x.zip

    总之,“metro-jax-ws-jaxws221x.zip”是一个宝贵的资源,对于想要学习和掌握JAX-WS的开发者来说,它可以提供一个完整的实践环境,帮助理解Web服务的生命周期、客户端和服务端的交互以及如何在实际项目中应用JAX-WS...

    JAX-WS 2.2 RI所有相关jar包

    JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...

    JAX-WS规范

    Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于创建Web服务和客户端。它提供了一种简单、类型安全的方式来构建和消费基于SOAP的消息传递应用程序,是Java世界中实现Web服务的核心框架之一。...

    jax-ws2.1.zip

    **标题:“jax-ws2.1.zip”**指的是一个包含Java API for XML Web Services(JAX-WS)2.1版本的压缩包。JAX-WS是Java平台标准版(Java SE)和企业版(Java EE)的一部分,用于构建基于SOAP(Simple Object Access ...

    JAX-WS所需Jar包

    标题提到的"JAX-WS所需Jar包"是指为了在Java环境中支持JAX-WS功能,开发者需要的一组核心库。这些库包含了运行和开发JAX-WS Web服务所必需的组件。下面将逐一解释这些库的作用: 1. **jaxb-xjc.jar**: 这是Java ...

    jax-ws发布webservice

    Java API for XML Web Services(JAX-WS)是Java平台上的一个标准,用于构建和部署Web服务。它简化了Web服务的开发,使得Java开发者能够更方便地创建、调用和部署SOAP(Simple Object Access Protocol)服务。在这个...

    Jax-ws RI.zip

    Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准,用于构建和部署Web服务。JAX-WS RI(Reference Implementation)是这个规范的官方参考实现,它提供了开发、测试和运行基于SOAP(Simple Object ...

    jax-ws webservice简单demo

    在"jax-ws webservice完整demo"中,你可以通过查看源码了解每个组件的具体实现,并学习如何将它们组合在一起,形成一个完整的Web服务。此外,通过运行提供的测试代码,你可以验证Web服务是否正常工作。这个例子是一...

    JAX-WS低版本

    **标题解析:** "JAX-WS低版本" 指的是Java API for XML Web Services的一个较早的发行版。JAX-WS是Java平台上用于创建Web服务的标准API,它简化了开发和部署基于SOAP(Simple Object Access Protocol)的Web服务和...

Global site tag (gtag.js) - Google Analytics