在 glassfish 中更改企业应用程序(ear)的上下文路径
Change context path of an Entreprise Application (ear) in glassfish
可以在 glassfish 中更改 Web 应用程序 (war
) 的上下文路径,但是是否有任何解决方案来更改 Entreprise 应用程序 (ear
) 的上下文路径?
我试着把它从 glassfish-web.xml
改成这样:
<!-- Default context -->
<context-root>/module1-web</context-root>
<!-- New context -->
<context-root>/erp/module1-web</context-root>
但它不起作用。我试图从服务器更改它,但没有办法更改它。
Web 应用程序上下文路径
这个问题有解决办法吗?
谢谢。
是的,您的问题有解决方案。
您需要在 EAR 的 META-INF
文件夹中放置一个名为 application.xml
的文件。
这是文件的示例:
<?xml version="1.0" encoding="UTF-8"?>
<application 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/application_6.xsd" version="6">
<application-name>your_application</application-name>
<display-name>your_application</display-name>
<module>
<web>
<web-uri>your-war-file.war</web-uri>
<context-root>/your_desired_context</context-root>
</web>
</module>
<module>
<web>
<web-uri>another-war-file.war</web-uri>
<context-root>/another/context/for/the/second/war/file</context-root>
</web>
</module>
<module>
<ejb>ejb-module-example.jar</ejb>
</module>
<library-directory>lib</library-directory>
</application>
如您所见,您还可以声明具有不同上下文路径的多个 Web 模块。
您可以使用 maven-ear-plugin, for more information have a look at this.
生成文件
这里是一个如何使用插件的例子:
要使其工作,您必须将您的 Web 模块(WAR)分离到一个额外的 Maven 项目中。然后你可以像这样在插件配置中引用它:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.9</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<applicationName>your_application</applicationName>
<modules>
<webModule>
<groupId>com.yourcompany</groupId>
<artifactId>your-web-module</artifactId>
<contextRoot>/your-web-module</contextRoot>
<excluded>false</excluded>
</webModule>
</modules>
</configuration>
</plugin>
</plugins>
可以在 glassfish 中更改 Web 应用程序 (war
) 的上下文路径,但是是否有任何解决方案来更改 Entreprise 应用程序 (ear
) 的上下文路径?
我试着把它从 glassfish-web.xml
改成这样:
<!-- Default context -->
<context-root>/module1-web</context-root>
<!-- New context -->
<context-root>/erp/module1-web</context-root>
但它不起作用。我试图从服务器更改它,但没有办法更改它。
Web 应用程序上下文路径
这个问题有解决办法吗?
谢谢。
是的,您的问题有解决方案。
您需要在 EAR 的 META-INF
文件夹中放置一个名为 application.xml
的文件。
这是文件的示例:
<?xml version="1.0" encoding="UTF-8"?>
<application 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/application_6.xsd" version="6">
<application-name>your_application</application-name>
<display-name>your_application</display-name>
<module>
<web>
<web-uri>your-war-file.war</web-uri>
<context-root>/your_desired_context</context-root>
</web>
</module>
<module>
<web>
<web-uri>another-war-file.war</web-uri>
<context-root>/another/context/for/the/second/war/file</context-root>
</web>
</module>
<module>
<ejb>ejb-module-example.jar</ejb>
</module>
<library-directory>lib</library-directory>
</application>
如您所见,您还可以声明具有不同上下文路径的多个 Web 模块。
您可以使用 maven-ear-plugin, for more information have a look at this.
生成文件这里是一个如何使用插件的例子:
要使其工作,您必须将您的 Web 模块(WAR)分离到一个额外的 Maven 项目中。然后你可以像这样在插件配置中引用它:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.9</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<applicationName>your_application</applicationName>
<modules>
<webModule>
<groupId>com.yourcompany</groupId>
<artifactId>your-web-module</artifactId>
<contextRoot>/your-web-module</contextRoot>
<excluded>false</excluded>
</webModule>
</modules>
</configuration>
</plugin>
</plugins>