我们当前正在WebLogic 10.3.5.0上运行一个应用程序,我们正在迁移到WL 12.1.2.0.0。我们遇到了对另一个应用程序进行Un-marshalling WS调用的问题。我们在升级时熟悉编组错误,但似乎这个问题并不相同。
奇怪的是它在同一WL版本的DEV / Test服务器上工作正常,但在本地部署时会返回以下错误(必须是env /配置设置不匹配?):
JAXB unmarshalling exception: null; nested exception is javax.xml.bind.UnmarshalException - with linked exception: [org.xml.sax.SAXParseException; cvc-complex-type.3.2.2: Attribute 'xsi:nil' is not allowed to appear in element 'error'.]
从错误消息中,它似乎没有识别xsi命名空间或其他东西。架构没有从10.3.5更改,也不应该是问题的根源。任何人都有任何想法甚至是一个出发点?
非常感谢
编辑:添加web.xml和weblogic.xml
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="cpc-mi" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
...
</web-app>
weblogic.xml中
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd
http://xmlns.oracle.com/weblogic/weblogic-web-app
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd"
xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
</weblogic-web-app>
答案 0 :(得分:1)
WebLogic 12c(WLS 12c)有自己的jar库,包括和jaxb。我已经使用过这个服务器,当我想使用JSF(WebLogic附带的另一个库)时,我必须告诉WLS 12c忽略它自己的JSF库并使用我的,包含在war / ear中。
您可以在weblogic.xml
文件夹中使用WEB-INF
描述符来实现此目的。在这里,您使用的是weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
<container-descriptor>
<prefer-application-packages>
<package-name>javax.faces.*</package-name>
<package-name>com.sun.faces.*</package-name>
<package-name>com.bea.faces.*</package-name>
<package-name>org.apache.commons.io.*</package-name>
<package-name>org.apache.commons.fileupload.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<resource-name>javax.faces.*</resource-name>
<resource-name>com.sun.faces.*</resource-name>
<resource-name>com.bea.faces.*</resource-name>
<resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
<resource-name>META-INF/services/com.sun.faces.*</resource-name>
</prefer-application-resources>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
</weblogic-web-app>
当然,您将自己的jaxb依赖项包含在war / ear中,并告诉WLS 12c忽略其jaxb库,使用java.xml.bind.*
标记的package-name
值,也可以使用resource-name
标记
希望它有所帮助。
答案 1 :(得分:0)
我对此知之甚少,而且我不确定这是否是远程正确的,但是确实放了xmlns:xsi =&#34; http://www.w3.org/2001/XMLSchema-instance& #34;在XML实例中使它工作?