QA@IT
«質問へ戻る

質問を投稿

WSDL 1.1 to Java Mapping

JDK7/JavaEE6(JAX-WS 2.2)です。
glassfishのwsimportコマンドを利用し、WSDLを起点としてSEIを生成します。

WSDLは一つではなく、複数存在します。
各WSDLのtargetNamespaceは全て同一とします。(名前空間が全て同じ)

これらWSDLに対してwsimportで資産生成を行うと、JAX-WS(JAXB)の仕様で、
SEIに@XmlSeeAlsoアノテーションが付与されます。
そして、ObjectFactory.classを参照しています。

(省略)
@WebService(name = "SampleWebService001", targetNamespace = "http://hoge.com/common")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso({
    ObjectFactory.class
})
public interface SampleWebService001 {
(省略)
(省略)
@WebService(name = "SampleWebService002", targetNamespace = "http://hoge.com/common")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso({
    ObjectFactory.class
})
public interface SampleWebService002 {
(省略)

WSDLのtargetNamespaceが同一ですから、ObjectFactory.javaのパッケージも同じです。
wsimportコマンドによって、FQCNが同じなのに中身の異なるObjectFactory.javaが生成されるのです。

WSDLは既存のサービスのものであるため、変更できません。
WSDLを変更せずに、この問題を回避する方法があれば、ご教示いただきたくよろしくお願い致します。

JDK7/JavaEE6(JAX-WS 2.2)です。
glassfishのwsimportコマンドを利用し、WSDLを起点としてSEIを生成します。

WSDLは一つではなく、複数存在します。
各WSDLのtargetNamespaceは全て同一とします。(名前空間が全て同じ)

これらWSDLに対してwsimportで資産生成を行うと、JAX-WS(JAXB)の仕様で、
SEIに@XmlSeeAlsoアノテーションが付与されます。
そして、ObjectFactory.classを参照しています。


```java
(省略)
@WebService(name = "SampleWebService001", targetNamespace = "http://hoge.com/common")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso({
    ObjectFactory.class
})
public interface SampleWebService001 {
(省略)
```

```java
(省略)
@WebService(name = "SampleWebService002", targetNamespace = "http://hoge.com/common")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso({
    ObjectFactory.class
})
public interface SampleWebService002 {
(省略)
```


WSDLのtargetNamespaceが同一ですから、ObjectFactory.javaのパッケージも同じです。
wsimportコマンドによって、FQCNが同じなのに中身の異なるObjectFactory.javaが生成されるのです。

WSDLは既存のサービスのものであるため、変更できません。
WSDLを変更せずに、この問題を回避する方法があれば、ご教示いただきたくよろしくお願い致します。