2011-04-08 7 views
5

내 웹 서비스 응용 프로그램이 JAX-WS로 축에서 이동 나는 문제가 변환의 일부를 수행하는 데 문제가 있습니다. 내 주요 문제는 동일한 유형이 약간 다르게 정의되었지만 동일한 이름을 가진 여러 XSD가 있다는 것입니다. 내 wsimport의 동안 나는 패키지를 해결하기 위해 외부 JAXB 바인딩 파일을 사용할 수있어,하지만 생성 된 클래스는 여전히 같은 @XmlType 주석으로 끝낼. 바인딩유형 생성시 JAXB 바인딩을 사용하여 XmlType.namespace 교체

package com.service.v2.bill.request; 
@XmlType(name = "FileBillReqType", namespace = "http://epayments.metavante.com/types/bill/request"}) 
public class FileBillReqType extends AbstractContextMethodRequest... 

:

<jaxb:bindings schemaLocation="file:../wsdl/v1/bill/BillRequest.xsd" 
    node="/xs:schema[@targetNamespace='http://service.example.com/bill/request']"> 
    <jaxb:schemaBindings> 
     <jaxb:package name="com.service.v1.bill.request" /> 
    </jaxb:schemaBindings> 
</jaxb:bindings> 

이전에이 우리가 하드로 코딩 축에 의해 제공되는 유형 매핑 (로 해결 된 것

V1 :

package com.service.v1.bill.request; 
@XmlType(name = "FileBillReqType", namespace = "http://epayments.metavante.com/types/bill/request"}) 
public class FileBillReqType extends AbstractContextMethodRequest... 

V2 대규모 추한 WSDD) :

<service name="v1" provider="java:RPC" style="document" use="literal">... 
<typeMapping 
    xmlns:ns="http://service.example.com/bill/request" 
    qname="ns:FileBillReqType" 
    type="java:com.service.v1.bill.request.FileBillReqType" 
    serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" 
    deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" 
    encodingStyle="" 
    />... 

생성 된 파일을 재생성 할 때마다 수동으로 수정하지 않고 생성 된 JAXB 객체에 사용자 정의 네임 스페이스를 가져 오려면 어떻게해야합니까? 문제를 해결할 수 wsimport의를 사용하여 클라이언트 클래스를 생성하는 동안

+0

같은 문제를 여기에 ... –

답변

1

스키마 위치로 v2와 함께 또 다른 xjb 사용자 정의를 지정.

<jaxb:bindings schemaLocation="file:../wsdl/v2/bill/BillRequest.xsd" 
node="/xs:schema[@targetNamespace='http://service.example.com/bill/request']"> 
    <jaxb:schemaBindings> 
     <jaxb:package name="com.service.v2.bill.request" /> 
    </jaxb:schemaBindings> 
</jaxb:bindings>