用WebService的类。
wsgen是一个命令行功能用来生成合适的JAX-WS。它读取WebService的终端类文件,在我们的例子中就是com.techyatra.hellows.HelloServer,同时生成所有用于WebService发布的源代码文件和经过编译过的二进制类文件。它还随意生成WSDL和符合规范的HelloServer类WebService。wsgen从资源文件生成一个完整的操作列表是合法的。
为了方便,这篇文章的源代码mustangws文件夹中包含了一个wsgenHello.bat批处理文件,里面包含了我们的Server项目中所需要的wsgen命令行的操作。
运行mustangws中的mustangws/wsgenHello.bat文件产生HelloExceptionBean源文件和编译过的class文件放入com.techyatra.hellows.jaxb文件夹中。这些类绑定了关于Java-XML的所有操作。
现在我们有了发布WebService的所有需要的条件,在我们发布这个服务之前,让我们再看一看将运行过程加入到WebService的调用队列。这个相当敏捷万一所有的通用过程都是调用这些服务所需要的过程,如此执行过程对所有的操作者来说都是合法的。操作者允许应用程序介绍自定义和核心商业需求域之外的特殊处理。这个操作者同样会执行安全检查,据使用统计,编码和解码数据,提供给其它模块开发者使用。
Handlers 从客户端(服务消费者)发送到服务端(服务提供者)的SOAP消息通过Java SE6中的JAX-WS处理管道来完成。Java SE 6提供了一个位于javax.xml.ws.handler包内的名为Handler的操作者解释器,能够插入到执行管道用来执行自定义、特殊应用程序程序传送绑定或者没有绑定的消息。两种Handler的类型都是合法的:logical和SOAP。SOAP操作者能够操作所有完整的SOAP消息,包括SOAP头部和SOAP的主体,而logical操作者仅仅能够操作SOAP主体有负载的部分。
我们的服务器包括了com.techyatra.hello.TraceHandler SOAP 操作者。它解释了没有绑定和经过绑定的SOAP消息,而且将内容输出在System.out显示出来:
/* * TraceHandler.java * @author shahga */ package com.techyatra.hellows; ... public class TraceHandler implements SOAPHandler<SOAPMessageContext> { ... public boolean handleMessage(SOAPMessageContext messageContext) { trace(messageContext); return true; } public boolean handleFault(SOAPMessageContext messageContext) { trace(messageContext); return true; } ... private void trace(SOAPMessageContext messageContext) { Boolean outMessageIndicator = (Boolean) messageContext.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY); if (outMessageIndicator.booleanValue()) { System.out.println("\nOutbound SOAP:"); } else { System.out.println("\nInbound SOAP:"); } SOAPMessage message = messageContext.getMessage(); try { message.writeTo(System.out); System.out.p上一页 [1] [2] [3] [4] [5] [6] 下一页
|