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

基于Jax--ws的webservice

阅读更多
在开发webservice的时候,我们需要加入自己的控制逻辑,自定义过滤器,对soap消息进行处理,或者是预先进行一些设置,等等。首先介绍一下如何自定义处理类逻辑。
基于JAS-WS有一个重要的文件,sun.jaxws.xml,这个文件是用来定义服务的处理类的,就好比web.xml一样,我们访问某个业务处理,是由哪一个servlet处理一样。
OK,先看文件。
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'>
	<endpoint name="hotel" interface="com.xmlapi.shop.hotel.v1.HotelShopPortType" implementation="com.shopsvc.webservices.hotel.HotelShopSoapServiceImpl" binding="http://www.w3.org/2003/05/soap/bindings/HTTP/" url-pattern="/soap/hotel/v1/*" service="{urn:com:xmlapi:shop:hotel:v1}HotelShopService" port="{urn:com:xmlapi:shop:hotel:v1}HotelShopPort" wsdl="WEB-INF/wsdl/com.xmlapi.shop.hotel.v1.wsdl">
		<javaee:handler-chains xmlns:javaee="http://java.sun.com/xml/ns/javaee">
			<javaee:handler-chain>
				<javaee:handler>
					<javaee:handler-class>com.shopsvc.soap.InboundHandler</javaee:handler-class>
				</javaee:handler>
				<javaee:handler>
					<javaee:handler-class>com.shopsvc.soap.OutboundHandler</javaee:handler-class>
				</javaee:handler>
			</javaee:handler-chain>
		</javaee:handler-chains>
	</endpoint>

</endpoints>


从这个文件我们自定义了2个handle来处理我们的请求和响应。包括当前提供的服务,处理那些url。
接下来我们看看handle类的结构。
public abstract class BaseProtocolHandler implements SOAPHandler<SOAPMessageContext>
{
/**
	 * 
	 * @param smc context of SOAP request message
	 */
	abstract void handleRequest(SOAPMessageContext smc);

	/**
	 * 
	 * @param smc context of SOAP response message
	 */
	abstract void handleResponse(SOAPMessageContext smc);

	/**
	 * Passes message handling down to the EWS filter manager. 
	 */
	public boolean handleMessage(SOAPMessageContext smc) 
	{
		if (smc == null)
		{
               			
	             SoapUtils.createInternalErrorException();
		}
		
		Object objectOutbound = smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
		
		if (objectOutbound == null || objectOutbound.getClass() != Boolean.class)
		{
           			
		 SoapUtils.createInternalErrorException();
		}
		
		boolean direction = (Boolean)objectOutbound;
		
		if (direction == FilterChain.INBOUND_DIRECTION)
		{
			this.handleRequest(smc);
		}
		else
		{
			this.handleResponse(smc);
		}
		
		// Returning true tells JAX-WS that it should not stop calling other handlers in
		// the chain. Returning false would stop calling the remaining handlers if any. 
		
		return true;
	}
/**
	 * Passes fault handling down to the filter manager. 
	 */
	public boolean handleFault(SOAPMessageContext smc)
	{
		smc.put(EwsSoapUtils.IS_FAULT_RESPONSE_KEY, true);
		this.handleResponse(smc);
		return true;
	}
	
	/**
	 * Informs JAX-WS what headers will understand.
	 * 
	 * This is necessary to be able to process Security header that comes
	 * with mustUnderstand="true" attribute.
	 * 
	 * @see javax.xml.ws.handler.soap.SOAPHandler#getHeaders()
	 */
	public Set<QName> getHeaders()
	{
		HashSet<QName> headers = new HashSet<QName>();
		
		headers.add(new QName(
				"http://schemas.xmlsoap.org/ws/2002/12/secext", 
				"Security", ""));
		
		// This is to support .NET WSE 3.0 security. 
		headers.add(new QName(
				"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", 
				"Security", ""));
		
		return headers;
	}
	



这是大体的逻辑框架,当服务进入的时候,首先会进入我们的handleMessage,然后去调用handleRequest or response.
这只是父类的实现,接下来我们继续讲子类的实现,以及自定义过滤器的运用。
分享到:
评论

相关推荐

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

    本篇将深入讲解如何基于JAX-WS开发一个WebService实例。 首先,让我们了解JAX-WS的基本概念。JAX-WS提供了一种简单的方式来创建SOAP(Simple Object Access Protocol)Web服务,它集成了Java SE和Java EE平台,使得...

    jax-ws webservice demo

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

    webservice之jax-ws

    JAX-WS取代了早期的JAX-RPC(Java API for XML-based RPC),提供了一个更加现代、轻量级且基于标准的框架。 1. **SOAP与Web服务** SOAP(简单对象访问协议)是一种基于XML的协议,用于交换结构化的信息。Web服务...

    metro-jax-ws-jaxws221x.zip

    这个压缩包是针对Java开发者设计的,用于帮助他们理解和实践基于JAX-WS的Web服务开发。 【描述】中提到的“jax-ws开发dome”,这里的“dome”很可能是指“demo”,即示例项目。这表明压缩包内包含了演示如何使用JAX...

    Jax-ws所需要的JAR包

    Java API for XML Web Services(JAX-WS)是Java平台上用于构建和消费Web服务的标准API。它简化了创建和使用Web服务的过程,使得开发者能够通过SOAP消息与远程服务进行交互。JAX-WS允许开发者将服务接口直接映射到...

    MyEclipse6_5上基于JAX-WS开发Webservice(中文示例)

    在"浔阳江上 - BlogJava.htm"和"MyEclipse6_5上基于JAX-WS开发Webservice(中文示例) - 浔阳江上 - BlogJava_files"这两个文件中,可能包含了作者在BlogJava网站上分享的具体步骤和示例代码,帮助读者更好地理解和...

    基于JAX-WS2.2开发WebService所需jar资源包

    使用 Eclipse JavaEE 开发 WebService 时,若选择手动创建原生的JAX-WS服务,需要导入此jar资源(教程详见我的博文https://blog.csdn.net/weixin_50604409/article/details/116399530)。 如果您同时装有 IntelliJ ...

    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允许开发者...

    jax-ws实现webservice调用

    使用JAX-WS,你可以通过添加注解(如`@WebService`)或使用XML配置文件来部署服务。对于简单的应用,注解方式更常见。例如,部署到Tomcat服务器时,只需确保服务类位于正确的包结构中,然后启动服务器。 ### 4. ...

    基于JDK自带的Web服务JAX-WS实现WebService的简单示例

    Java 基于第三方插件实现WebService实在麻烦,尤其是要添加几十M的Jar包,有时还会导致项目冲突。还好,自从JDK 1.6开始,Java自身已经支持WebSeervice的开发即JAX-WS,附件是一个简单的示例,供入门参考。注意,JDK...

    jax-ws webservice简单demo

    3. **生成WSDL**:使用JAX-WS工具(如`wsimport`)自动生成WSDL文件,基于SEI接口。 4. **部署服务**:将实现类和WSDL部署到应用服务器,例如Tomcat或Jetty。 5. **生成客户端代理**:客户端使用`wsimport`工具或`...

    MyEclipse基于JAX-WS开发Webservice+WebserviceClient客户端调用.zip

    【标题】"MyEclipse基于JAX-WS开发Webservice+WebserviceClient客户端调用" 涉及到的关键技术主要包括MyEclipse集成开发环境、JAX-WS规范、Web服务(Webservice)以及客户端调用。下面将详细介绍这些概念及其相互...

    jax-ws发布webservice

    通过定义服务接口,实现服务逻辑,以及使用`Endpoint.publish()`发布服务,我们可以轻松地创建一个基于JAX-WS的Web服务。同时,利用`wsimport`工具生成客户端代码,可以方便地进行服务调用。在"jax-ws-server"和"jax...

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例 - 外衣 - 博客频道 - CSDN_NET.mht

    JAX-WS_WebService.rar

    JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用

    jax-ws WebService客户端与服务端工程.rar

    这个"jax-ws WebService客户端与服务端工程.rar"压缩包文件包含了一个完整的示例,展示了如何使用JAX-WS创建和消费Web服务。让我们深入探讨一下JAX-WS的核心概念和技术。 1. **Web服务基础**: - **SOAP(Simple ...

    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-WS2.0 API

    JAX-WS 2.0是JAX-WS的第二个主要版本,它在JAX-RPC(Java API for XML-based RPC)的基础上进行了改进,引入了许多新特性以提升开发者的体验和效率。 **JAX-WS 2.0 的核心概念:** 1. **服务端点接口(SEI, ...

    java WebService Jax-WS创建

    【Java WebService Jax-WS 创建】是Java中创建Web服务的一种常见方式,主要用于构建基于SOAP(Simple Object Access Protocol)的Web服务。JAX-WS(Java API for XML Web Services)是Java EE 5及更高版本中提供的...

    MyEclipse6.5上基于JAX-WS开发Webservice

    JAX-WS 是一种用于构建和部署 Web 服务的 Java API,它在 Java EE 5 及以上版本中被引入,用于替代早期的 JAX-RPC。JAX-WS 提供了更加简洁和面向对象的 API,使得开发者可以更容易地创建符合 W3C 标准的 SOAP...

Global site tag (gtag.js) - Google Analytics