有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java WebLogic 12c迁移问题与解组JAXB

我们目前有一个应用程序在WebLogic 10.3.5.0上运行,我们正在迁移到WL12.1.2.0.0。我们遇到将WS调用取消编组到另一个应用程序的问题。我们熟悉升级时的编组错误,但是这个问题似乎不一样

值得注意的是,它在相同WL版本的开发/测试服务器上工作正常,但在本地部署时将返回以下错误(必须是环境/配置设置不匹配?):

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更改,不应该是问题的根源。有人有什么想法,甚至是一个出发点吗

非常感谢

编辑:添加网页。xml和weblogic。xml

网络。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>

共 (3) 个答案

  1. # 1 楼答案

    我对此知之甚少,甚至不确定这是否完全正确,但放xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“在XML实例中,如何使其工作

  2. # 2 楼答案

    我们有一个类似的问题:soap消息的解析在10.3中工作。x、 但12年后失败了。x、 这个问题原来是一个过时的xercesImpl。罐子我怀疑这是怎么回事,但我想我会分享经验以防万一

    请注意,过时的xercesImpl。jar包含在作为库部署的一个war文件中,而不是Oracle作为WebLogic 12的一部分提供的任何东西

  3. # 3 楼答案

    WebLogic12c(WLS12c)有自己的jar库,包括和jaxb。我已经在使用这个服务器,当我想使用JSF(WebLogic附带的另一个库)时,我必须告诉WLS 12c,它忽略自己的JSF库,而使用war/ear中包含的我的JSF库

    您可以在WEB-INF文件夹中使用weblogic.xml描述符来实现这一点。这是你和我的一个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库,对package-name标记使用java.xml.bind.*值,也可以对resource-name标记使用java.xml.bind.*

    希望能有帮助