如何在weblogic中更改企业应用程序的上下文根(.ear)

时间:2016-12-11 13:21:18

标签: java weblogic ear weblogic-10.x application.xml

我们有第三方基于Web的企业应用程序,它部署在weblogic服务器上,可以使用

访问
http://hostname:port/myApp

但是,由于某种原因,我们想要更改此应用的context-root,因此必须才能使用

http://hostname:port/newApp

因此,为实现这一目标,我们尝试更改application.xml

<?xml version = '1.0' encoding = 'utf-8'?>
<application xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" version="1.4">
   <display-name>myApp</display-name>
   <module>
         <web>
            <web-uri>myApp.war</web-uri>
            <context-root>newApp</context-root>  // changed from myApp to newApp
         </web>
   </module>
</application>

但是,在weblogic服务器上部署此应用程序时,我们遇到以下错误。

weblogic.management.DeploymentException: The application myApp contains a SubDeploymentMBean with a name myApp however there is no module in the application with that URI or context-root.

另一方面,如果我们将context-root保存在application.xml文件下面,那么它就会成功部署,并且还能够使用context-root访问应用程序。

<?xml version = '1.0' encoding = 'utf-8'?>
<application xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" version="1.4">
   <display-name>myApp</display-name>
   <module>
         <web>
            <web-uri>myApp.war</web-uri>
            <context-root>newApp</context-root>  // changed from myApp to newApp
         </web>
   </module>
   <module>
         <web>
            <web-uri>myApp.war</web-uri>
            <context-root>myApp</context-root>
         </web>
   </module>
</application>

有人可以帮我解决这个问题吗?如果需要其他信息,请与我们联系。

==被修改==

我添加了weblogic.xml文件,但不确定,我想在@Hououin Kyouma在他/她的回答中指出要改变的文件。

<?xml version = '1.0' encoding = 'US-ASCII'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
   <session-descriptor> 
      <cookie-path>/myApp</cookie-path> 
   </session-descriptor>
   <container-descriptor>
       <prefer-web-inf-classes>true</prefer-web-inf-classes>
   </container-descriptor>
</weblogic-web-app>

2 个答案:

答案 0 :(得分:1)

您无法在application.xml

中使用不同名称的war文件定义上下文根
GET

您必须将上方更改为

<module>
    <web>
        <web-uri>myApp.war</web-uri>
        <context-root>newApp</context-root>  // changed from myApp to newApp
    </web>
</module>

您需要使用新名称创建战争。您仍然需要更改新war文件中的weblogic.xml,但只要这个问题出现,上面就是您需要做的。

答案 1 :(得分:0)

您是否尝试过在weblogic.xml中设置上下文根? https://docs.oracle.com/cd/E13222_01/wls/docs90/webapp/weblogic_xml.html#1073750

EDIT 尝试添加它像这里提到的 https://community.oracle.com/thread/747158

<?xml version = '1.0' encoding = 'US-ASCII'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
 <context-root>/newApp</context-root>
<session-descriptor> 
  <cookie-path>/newApp</cookie-path> 
</session-descriptor>
<container-descriptor>
   <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>