2012-10-03 3 views
0

다음 문제에 대한 해결책을 찾으려고했습니다. wsdl 파일에 여러 (6) xsd 가져 오기가 포함되어 있습니다. 내 xsd는 내 프로젝트의 외부에 있기 때문에 변경할 수 없습니다. 이 스키마 중 2 개에서 정의가 약간 다른 4 개의 정의가 모두 있습니다. 각 '충돌하는'xsd 스키마를 자체 패키지로 변환하려고 시도했습니다. 나는 바인딩을 다음과 같은 노력하지만 일하지 않았다 :충돌하는 xsd 가져 오기가있는 wsdl

testbindings.jaxb : 사용

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1"> 
    <bindings schemaLocation="a.xsd"> 
     <schemaBindings> 
       <package name="org.wsi.a" /> 
     </schemaBindings> 
    </bindings> 
</bindings> 

: wsimport -p org.wsi -b testbindings.jaxb broker.wsdl

모든 클래스가 org.wsi에 생성되지 않고 클래스 org.wsi.a에서됩니다. -p 스위치를 사용하지 않으면 모든 xsd가 자체 기본 패키지로 생성됩니다. 그러나 각 xsd에 대해 특정 패키지를 사용하도록 wsimport에 지시 할 수는 없습니다. 이 순간에 나는 아마 잘못된 바인딩 파일을 다음 사용하지만, 어떤의 wsimport의 불평하지 않습니다 패키지에서

<?xml version="1.0"?> 
<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xsd="http://www.w3.org/2001/XMLSchema"    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"> 

<jaxws:bindings wsdlLocation="broker.wsdl" node="wsdl:definitions/wsdl:types/xsd:schema"> 

    <jaxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" node="//xs:schema/xs:import[@namespace='http://docs.oasis-open.org/wsn/b-2']">> 
     <jaxb:schemaBindings> 
      <jaxb:package name="org.broker.wsi.b_2"/> 
     </jaxb:schemaBindings> 
    </jaxb:bindings> 

    <jaxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" node="//xs:schema/xs:import[@namespace='http://docs.oasis-open.org/wsn/t-1']">> 
     <jaxb:schemaBindings> 
      <jaxb:package name="org.broker.wsi.t_1"/> 
     </jaxb:schemaBindings> 
    </jaxb:bindings> 

</jaxws:bindings> 

는 org.broker.wsi.b_2 및 org.broker.wsi .t_1 파일이 생성되지 않습니다.

다음과 같이 바인딩을 사용했습니다 : http://docs.oracle.com/cd/E13222_01/wls/docs103/webserv/data_types.html#wp227713하지만 올바르지 않을 수 있습니다.

제안을 환영합니다.

+0

당신은 제대로 모든 것을 복사 - 붙여 넣기나요? ''< 'schemaLocation = "b-2.xsd"node = "/ xsd : schema">>'물고기처럼 보입니다. – nalply

+0

스키마를 어떻게 가져 옵니까? 스키마 가져 오기 (붙여 넣기되지 않은 버전)를 붙여 넣을 수 있습니까? 나는 의 wsdl을 가리킨다. –

답변

0
는 WSDL, 내부 XSD와 외부 XSD 년대에 대한 올바른 패키지 이름을 설정하는 문제는 질문/대답에 설명되어

: dma-k

:

  • wsimport - how to generate service endpoint classes and JAXB classes in separate projects/folders에 의해 게시 INT-bindings.xml 파일 :

    <?xml version="1.0"?> 
    <jaxws:bindings version="2.0" 
           xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"     
          xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
          xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
          wsdlLocation="broker.wsdl"> 
    
    <jaxws:package name="org.broker.wsi" /> 
    
    <jaxb:bindings node="//xsd:schema"> 
        <jaxb:schemaBindings> 
         <jaxb:package name="org.broker.wsi.al"/> 
        </jaxb:schemaBindings> 
    </jaxb:bindings> 
    

    외부-바인딩 파일 (약칭 함) :

    <jaxb:bindings version="1.0" 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    
        <jaxb:bindings schemaLocation="http://docs.oasis-open.org/wsn/b-2.xsd" node="//xsd:schema"> 
          <jaxb:schemaBindings> 
           <jaxb:package name="org.broker.wsi.oasis.b2"/> 
          </jaxb:schemaBindings> 
        </jaxb:bindings> 
    </jaxb:bindings>