2010-05-31 3 views
2

웹 서비스로 jws-anotated 된 EJB가 있습니다. 똑같이 복잡한 xsd를 생성하는 꽤 복잡한 pojo-model을 가지고 있습니다. pojos는 수많은 java.util.Date를 포함합니다. 이것들은 모두 xs : dateTime에 매핑됩니다.JAX-WS에서 java.util.Date를 xs : dateTime 대신 xs : dateTime으로 매핑합니다.

이 서비스는 Oracle (BEA) OSB (AquaLogic)에서 "비즈니스 서비스"로 사용됩니다. 우리는 XQuery (OSB/AquaLogic 방식)를 사용하여 BS에 매핑하는 "프록시 서비스"도 가지고 있습니다. 프록시 서비스의 xsd에는 해당 필드에 대한 xs : date가 있습니다. 어떤 이유로 Oracle의 XQuery 구현은 xs : date에서 xs : dateTime (!)으로의 캐스팅을 지원하지 않습니다.

"T00 : 00 : 00"으로 xs : string 및 concat :로 캐스팅하여이를 해결할 수 있지만 대신 xs : date를 사용하여 xsd를 생성하도록 JAX-WS를 얻으려고합니다. 단,이 작업을 수행하는 방법에 대한 정보를 찾을 수 없습니다 (별명?).

누구든지 내게 힌트를 줄 수 있습니까?

종류와 관련, 라스

답변

2

은 내가 특별히 오라클에 대한 모르겠지만, CXF이 매핑을 수행하는 유틸리티가있다. 당신은 당신의 설정에 대해 비슷한 어댑터를 찾을 수있을 것입니다. 다음 페이지를보십시오. http://cxf.apache.org/docs/wsdl-to-java.html.

스키마가 WSDL에 있는지 또는 별도의 URL에 있는지에 따라 두 가지 옵션이 있습니다 (사용자가 Java의 첫 번째 구성이지만 프록시 측에서 변환을 수행하는 것으로 알고 있음).

<jaxws:bindings wsdlLocation="YOUR_WSDL_LOCATION" 
      xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 
    <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='THE_NAMESPACE_OF_YOUR_SCHEMA']"> 
     <jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
     <jxb:javaType name="java.util.Date" xmlType="xs:dateTime" 
         parseMethod="org.apache.cxf.tools.common.DataTypeAdapter.parseDateTime" 
         printMethod="org.apache.cxf.tools.common.DataTypeAdapter.printDateTime"/> 
     </jxb:globalBindings> 
    </jaxws:bindings> 
</jaxws:bindings> 

XSD는 : 외부, 우리 CXF에서

<jxb:bindings version="2.0" 
       xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
       xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <jxb:bindings schemaLocation="file:<path><name>.xsd" node="/xs:schema"> 
    <jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
     <jxb:javaType name="java.util.Date" xmlType="xs:dateTime" 
        parseMethod="org.apache.cxf.tools.common.DataTypeAdapter.parseDateTime" 
        printMethod="org.apache.cxf.tools.common.DataTypeAdapter.printDateTime"/> 
    </jxb:globalBindings> 
    </jxb:bindings> 
</jxb:bindings> 

JAXB 구문, 우리는 태양력을 사용하지 않는 매핑을 사용하지만 당신은 아마 캐스팅을 수행하는 데 사용할 수 있습니다.

관련 문제