从 Weblogic 10 迁移到 12 的 JAXB Web 服务
JAXB Webservice migrating from Weblogic 10 to 12
我在 Weblogic 10.3 上有一个 运行 网络服务 (JAX-WS 2.2)。一切正常。所以不可能是wsdl的问题。
我尝试迁移到 WLS 12。但现在我在部署时遇到错误。
从 WLS 10 到 WLS 12 有什么变化会导致问题?
WLS 12 的 JAXB 实现发生了变化。
- 在 Oracle Weblogic WLS10 中提供了 Glassfish JAXB RI 实现
- 在 Oracle Weblogic WLS12 中提供了 EclipseLink Implementaiotn MOXy
您可以按照所述使用 JAXB RI 强制 WLS12 oracle docs
您需要覆盖以下两个属性以告知 WLS12 使用 JAXB RI:
- com.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.glassfish.JAXBRIContextFactory
- javax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory
执行此操作的最简单方法是 添加数据绑定。override_1.0.0.0.jar 到您的类路径
或者您可以将它们设置为 java 系统属性,但如 oracle 文档中所写
在某些情况下,可能很难将系统属性传播到间接调用的 Java 实例,例如从 Ant 任务派生的客户端。在这些情况下,确保您使用的环境传播属性很重要。
我正在从 10.3.6 升级到 12.2.1.3 并看到同样的问题:下面的异常。 modules/databinding.override_1.0.0.0.jar 不是分发的一部分,但我发现:Oracle/Middleware_Home12c/wlserver/modules/databinding.override.jar我将其包含在 calsspath 中,但这并没有解决问题,仍然出现相同的异常。
Feb 07, 2019 9:22:51 AM org.springframework.web.context.ContextLoader initWebApplicationContext
SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'basketService' defined in ServletContext resource [/WEB-INF/store-services.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public synchronized java.lang.Object org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create()] threw exception; nested exception is Exception [EclipseLink-25037] (Eclipse Persistence Services - 2.6.5.v20170607-b3d05bd): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: A cycle is detected in the object graph. This will cause an infinite loop: org.eclipse.persistence.internal.oxm.schema.model.ComplexType@8e926ca -> org.eclipse.persistence.internal.oxm.schema.model.Element@3e83f11a -> org.eclipse.persistence.internal.oxm.schema.model.Sequence@745d452e -> org.eclipse.persistence.internal.oxm.schema.model.ComplexType@8e926ca
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:597)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1055)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:951)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
我在 Weblogic 10.3 上有一个 运行 网络服务 (JAX-WS 2.2)。一切正常。所以不可能是wsdl的问题。
我尝试迁移到 WLS 12。但现在我在部署时遇到错误。
从 WLS 10 到 WLS 12 有什么变化会导致问题?
WLS 12 的 JAXB 实现发生了变化。
- 在 Oracle Weblogic WLS10 中提供了 Glassfish JAXB RI 实现
- 在 Oracle Weblogic WLS12 中提供了 EclipseLink Implementaiotn MOXy
您可以按照所述使用 JAXB RI 强制 WLS12 oracle docs
您需要覆盖以下两个属性以告知 WLS12 使用 JAXB RI:
- com.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.glassfish.JAXBRIContextFactory
- javax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory
执行此操作的最简单方法是 添加数据绑定。override_1.0.0.0.jar 到您的类路径
或者您可以将它们设置为 java 系统属性,但如 oracle 文档中所写
在某些情况下,可能很难将系统属性传播到间接调用的 Java 实例,例如从 Ant 任务派生的客户端。在这些情况下,确保您使用的环境传播属性很重要。
我正在从 10.3.6 升级到 12.2.1.3 并看到同样的问题:下面的异常。 modules/databinding.override_1.0.0.0.jar 不是分发的一部分,但我发现:Oracle/Middleware_Home12c/wlserver/modules/databinding.override.jar我将其包含在 calsspath 中,但这并没有解决问题,仍然出现相同的异常。
Feb 07, 2019 9:22:51 AM org.springframework.web.context.ContextLoader initWebApplicationContext
SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'basketService' defined in ServletContext resource [/WEB-INF/store-services.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public synchronized java.lang.Object org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create()] threw exception; nested exception is Exception [EclipseLink-25037] (Eclipse Persistence Services - 2.6.5.v20170607-b3d05bd): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: A cycle is detected in the object graph. This will cause an infinite loop: org.eclipse.persistence.internal.oxm.schema.model.ComplexType@8e926ca -> org.eclipse.persistence.internal.oxm.schema.model.Element@3e83f11a -> org.eclipse.persistence.internal.oxm.schema.model.Sequence@745d452e -> org.eclipse.persistence.internal.oxm.schema.model.ComplexType@8e926ca
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:597)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1055)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:951)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)