文档章节

wsimport使用小结二

ajavaloser
 ajavaloser
发布于 2012/12/17 01:57
字数 411
阅读 1110
收藏 1

那些很纠结要不要直接用wsimport生成的pojo,因为我没能找到很好的办法去转xmlGregorianCalendar到date或者java.util.Calendar,我觉得在pojo依赖ws是不可接受的,奋战了一晚上找到了在wsimport时转换的办法,为了方便日后记忆,贴上配置清单,此清单还包括了禁用 ws的wrapper  style和异步方式的调用等,截获soap消息,打印log,已经使用本地的wsdl等。

先上一个命令行

wsimport -b ReaderServices-building.xml -p com.xxx.ws.stub.reader -wsdllocation ReaderServices.wsdl -Xnocompile ReaderServices.wsdl
在上building.xml

<bindings 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns="http://java.sun.com/xml/ns/jaxws">
	<enableWrapperStyle>false</enableWrapperStyle>
	<enableAsyncMapping>false</enableAsyncMapping>
	
	<bindings node="wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://xxx.com/ReaderServices/']">
        <jaxb:globalBindings>
			<jaxb:javaType name="java.util.Calendar" xmlType="xsd:date"
			  parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
			  printMethod="javax.xml.bind.DatatypeConverter.printDate"/>
			<jaxb:javaType name="java.util.Calendar" xmlType="xsd:dateTime"
			  parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
			  printMethod="javax.xml.bind.DatatypeConverter.printDate"/>
	  </jaxb:globalBindings>
    </bindings>
    <bindings node="wsdl:definitions" xmlns:jws="http://java.sun.com/xml/ns/javaee">
        <jws:handler-chains>
            <jws:handler-chain>
                <jws:handler>
                    <jws:handler-class>fromwsdlhandler.common.LoggingHandler</jws:handler-class>
                </jws:handler>
            </jws:handler-chain>
        </jws:handler-chains>
    </bindings>
</bindings>
LoggingHandler是直接从ws sample下面里拿的,小改了下源码

import java.io.PrintStream;
import java.util.Set;


import javax.xml.namespace.QName;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;


/*
 * This simple SOAPHandler will output the contents of incoming
 * and outgoing messages.
 */
public class LoggingHandler implements SOAPHandler<SOAPMessageContext> {
    
    // change this to redirect output if desired
    private static PrintStream out = System.out;
    
    public Set<QName> getHeaders() {
        return null;
    }
    
    public boolean handleMessage(SOAPMessageContext smc) {
        logToSystemOut(smc);
        return true;
    }
    
    public boolean handleFault(SOAPMessageContext smc) {
        logToSystemOut(smc);
        return true;
    }
    
    // nothing to clean up
    public void close(MessageContext messageContext) {
    }
    
    /*
     * Check the MESSAGE_OUTBOUND_PROPERTY in the context
     * to see if this is an outgoing or incoming message.
     * Write a brief message to the print stream and
     * output the message. The writeTo() method can throw
     * SOAPException or IOException
     */
    private void logToSystemOut(SOAPMessageContext smc) {
        Boolean outboundProperty = (Boolean)
            smc.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY);
        
        if (outboundProperty.booleanValue()) {
            out.println("\nHandler Log -> Outbound message:");
        } else {
            out.println("\nHandler Log -> Inbound message:");
        }
        
        SOAPMessage message = smc.getMessage();
        try {
 message.writeTo(out);
 out.println();
 } catch (Exception e) {
 e.printStackTrace();
 } 
        
    }
}

 
 
 

 

 

  

© 著作权归作者所有

共有 人打赏支持
ajavaloser
粉丝 18
博文 21
码字总数 4232
作品 0
浦东
高级程序员
私信 提问
【WebService 系列二 使用JAX-WS开发示例程序】

1、服务端代码 1.1、编写SEI SEI即(Service Endpoint Interface)SEI在ws中称为portType,在java中称为接口 1.2、编写SEI实现类 使用了一个类级别的注解,使用了这个注解的类、接口、枚举、...

HansonReal
2018/10/23
0
0
简单的webservice 实例

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平...

tsmyk0715
2016/10/25
77
0
WebService学习总结(三)--使用JDK开发WebService

一、WebService的开发手段   使用Java开发WebService时可以使用以下两种开发手段     1、 使用JDK开发(1.6及以上版本)     2、使用CXF框架开发(工作中) 二、使用JDK开发WebServic...

JAVA_NINA
2016/05/02
135
1
使用JDK开发WebService

WebService学习总结(三)——使用JDK开发WebService 一、WebService的开发手段   使用Java开发WebService时可以使用以下两种开发手段     1、 使用JDK开发(1.6及以上版本)     2、使...

stys35
01/26
0
0
Web Services 学习笔记(二) - java 基础实践

1.服务端 首先编写曝露方法 import javax.jws.WebMethod; import javax.jws.WebService; @WebService public class HelloWebService { @WebMethod public String hello(String name) { Syst......

晨猫
2018/01/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

万能的Python,还能用来制作高大上的进度条?

对于开发或者运维来说,使用Python去完成一些跑批任务,或者做一些监控事件是非常正常的情况。那么如何有效的监控任务的进度,除了在任务中加上log外,还能不能有另一种方式来了解任务进展到...

上海小胖
31分钟前
2
0
如何嵌入 HTML 到 iPython notebook的输出

如何嵌入 HTML 到 iPython notebook的输出 iPython notebook中可以嵌入 HTML,也适用于JupyterHub和JupyterLab环境。不仅可以显示常用的HTML标签文本,甚至可以嵌入脚本交互操作和Frame分隔框...

openthings
58分钟前
1
0
四、RabbitMQ3.7在CentOS7下的安装

安装依赖 sudo yum install -y gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git 创建yum源 vi /etc/yum.repos.d/rabbitmq-erlang.repo [......

XuePeng77
今天
2
0
android 延长Toast的时长

示例:myToast(5000,"hello"); public void myToast(int showTime, String msg) { Toast hello = Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT); new CountDownTimer(......

雨焰
昨天
4
0
浅谈mybatis的日志适配模式

Java开发中经常用到的日志框架有很多,Log4j、Log4j2、slf4j等等,Mybatis定义了一套统一的日志接口供上层使用,并为上述常用的日志框架提供了相应的适配器。有关适配器模式例子可以参考 设计...

算法之名
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部