2012-01-17 43 views
2

使用JAX-RPC wscompile ANT任務從WSDL生成java類時遇到問題。wscompile JAX-RPC生成日曆對象而不是日期

我的ant腳本:

<taskdef name="wscompile" classname="com.sun.xml.rpc.tools.ant.Wscompile" classpathref="jaxrpc.classpath"/> 
<taskdef name="wsdeploy" classname="com.sun.xml.rpc.tools.ant.Wsdeploy" classpathref="jaxrpc.classpath"/> 
<wscompile 
     fork="true" 
     base="${target.jaxrpc.dir}" 
     server="true" 
     client="false" 
     features="documentliteral" 
     model="${target.jaxrpc.dir}/model.xml.gz" 
     debug="true" 
     keep="true" 
     verbose="true" 
     config="${src.main.config.dir}/jaxrpc-service-config.xml"> 
    <classpath refid="jaxrpc.classpath"/> 
</wscompile> 

在我的WSDL有Date類型的對象,問題是,JAX-RPC產生日曆對象。有沒有辦法設置一些標誌或以某種方式強制JAX-RPC生成Date對象?

回答

1

這是因爲Enterprise Web Services 1.1規範定義了Java類和XML類型之間的默認映射。但是您可以更改應用程序的默認映射。您可以通過編輯元素JAX-RPC的內容來更改映射映射文件。在你的情況下,你必須做下列改變:

<java-wsdl-mapping> 
     ... 
     <java-xml-type-mapping> 
     <java-type>java.util.Date</java-type> 
     <root-type-qname xmlns:qn="http://www.w3c.org/2001/XMLSchema">qn:dateTime</root-type-qname> 
    </java-xml-type-mapping> 
     ... 
    <java-wsdl-mapping> 
+0

謝謝。但我無法弄清楚我必須在哪裏指定這個文件? ... mapping =「$ {src.main.config.dir}/jaxrpc-mapping- ... 我把它放到我的任務中,但是在這個文件中,任務寫入了wsdl中的所有對象,它覆蓋了它和我的更改不會生效。 – 2012-01-17 09:00:42

+0

只需通過這個http://docs.oracle.com/cd/B32110_01/web.1013/b28975/appjaxrpcmapping.htm#CEGEEAIJ這裏是所有的細節 – Rupeshit 2012-01-17 09:10:33

+0

謝謝你,你真的幫了我。 – 2012-01-17 09:16:35