带有java 7的Weblogic 12c在JAXBElement中没有设置nil

时间:2014-02-07 15:54:00

标签: java jaxb weblogic

我们使用java 6在weblogic 11g上运行应用程序。现在我们想使用weblogic 12c和java 7,但是我们遇到了一些问题。我们正在使用JAXB来解除/填充soap请求。现在,当我们将应用程序部署到wls12时,我们遇到了元素中nillable atribut的问题。当我发送xml:

<data:MyElement state="ok" xsi:nil="true"/>
我的应用中的

元素不是nill:

element.isNil() return false

JUnit与此测试仍然有效,所以我认为java7没有问题。这个问题只发生在wls12上。我该如何解决这个问题,或者至少应该如何调试呢

请求帮助

2 个答案:

答案 0 :(得分:1)

WebLogic 11&amp; 12

从WebLogic 12.1.1开始EclipseLink MOXy是默认的JAXB (JSR-222)提供商。

导致失败的原因是什么

您正在点击以下MOXy错误。

你能做什么:

  1. 如果您是Oracle支持客户,则可以与他们联系以获得正式修复。
  2. 您可以使用可在此处找到的官方说明恢复使用服务器或应用程序级别的JAXB RI:http://docs.oracle.com/cd/E24329_01/web.1211/e24964/data_types.htm#CIHBHDGI

答案 1 :(得分:0)

对于也会遇到这个问题的下一代:

当我打开跟踪消息时,会再次出现此问题。

org.springframework.ws.server.MessageTracing=TRACE

通过调试我看到wls 12使用oracle.j2ee.ws.saaj.soap.soap11.Message11并且10使用weblogic.xml.saaj.SOAPMessageImpl

我需要做的就是将这个类添加到messageFactory:

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
    <property name="messageFactory">
        <bean class="weblogic.xml.saaj.MessageFactoryImpl" />
    </property>
</bean>