내가 (아니 우리가 유지) 제 3 자 WSDL에서 자바 코드를 생성하는 CXF를 사용합니다.CXF WSDL2Java의 옵션 및 필수 요소
나는 비누 메시지에 마샬링 때 예상대로되지 작업이 두 조각이있다. 왜 SOAP 메시지에 Y를 추가
<x>123456782</x>
<y xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:nil="true" />
는 선택 요소의 상태 : 같은
XML:
<choice>
<sequence>
<element name="x" type="xt" nillable="true" minOccurs="0" />
</sequence>
<element name="y" type="yt"
nillable="true" minOccurs="0" />
</choice>
Java:
@XmlElement(name = "x", nillable = true)
protected Xx;
@XmlElement(name = "y", nillable = true)
protected Y y;
나는 X를 추가 할 수 있지만 (코드를 통해) SOAP 메시지에 y를하지 않으면
는 다음 보인다 ? 유사한뭔가이 조각에 무슨 일이 일어나고 :
CXF 여기XML:
<attribute ref="z" use="required" fixed="XXX" />
Java:
@XmlAttribute(name = "z", namespace = "http://www.egem.nl/StUF/StUF0301",
required = true)
protected String z;
내가 코드를 통해 요소를 추가하지 않을 경우 (참에 스키마 유효성 검사 포함)를 뿌려줍니다. 스키마 유효성 검사를하면 요소 추가가 모두 생성되지 않습니다.
이 요소가 필요하고 내가 (코드를 통해)을 추가하지 않으면, 왜 그것을 고정 속성 생성되지 않고있다?
편집 : 개발 중에 내가 그 CXF 나에게 네임 스페이스에 문제가 준있는 .package-info.java 파일을 생성 깨달았다. 그래서 나는 .package-info.java 파일의 생성을 불가능하게하는 방법을 찾고 있었다. 그 해결책은 pom 파일에 cxf codegen plugin : -xjc-npa에 대한 추가 작업을하는 것입니다. 그 부분은 다음과 같습니다 :
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<configuration>
<defaultOptions>
<extraargs>
<extraarg>-xjc-npa</extraarg>
</extraargs>
</defaultOptions>
</configuration>
</plugin>
그러나 놀랍게도 클래스 파일을 다시 생성 한 후에는 고정 된 요소가 모두 상수가되었습니다. 더 이상 getters/setters가 생성되지 않습니다. 그러나 불행히도 선택 문제가 남아 있습니다..