我有一个带有Glassfish Application-Server的EJB WEB应用程序。现在我想要这样的Context-Root "/“。我当前的网址是"http://localhost:8080/Make“,但我想要这个网址:"http://localhost:8080”,不带"Make“作为我当前的应用程序名称。但是当我部署它并提示"http://localhost:8080“时,我从glassfish得到了”服务器正在运行“的页面,所以我试着弄清楚我能做些什么。我已经在WEB-INF文件夹中创建了glassfish-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish- web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<context-root>/</context-root>
</glassfish-web-app>什么都没发生。然后我在同一个文件夹中创建了sun-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 Servlet 3.0//EN"
"http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
<sun-web-app error-url="">
<context-root>/path/to/our/App</context-root>
</sun-web-app>另外,我还有一个带有glassfish-application.xml和application.xml的trie。那么我必须做些什么才能达到这种效果呢?
PS:这是我的web.xml,我部署为EAR文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>Make</display-name>
<mime-mapping>
<extension>xhtml</extension>
<mime-type>application/xml</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>anmeldung.xhtml</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/anmeldung.xhtml</location>
</error-page>
<context-param>
<param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>bootstrap</param-value>
</context-param>
<context-param>
<param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
<param-value>/WEB-INF/resources</param-value>
</context-param>
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>编辑: WEB-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>Make</application-name>
<display-name>Make</display-name>
<module>
<web>
<web-uri>Make.war</web-uri>
<context-root>/</context-root>
</web>
</module>
<module>
<ejb>makeITown.jar</ejb>
</module>
<library-directory>lib</library-directory>
</application>发布于 2018-04-07 09:46:27
将上下文根设置为/还不足以仅通过键入http://yourdomain.org来访问您的web应用程序,因为Glassfish将显示在index.html`中找到的“您的服务器正在运行”消息。
来启动你的应用程序。将Configuration | server-config | Virtual Servers | server中的Default Web Module下拉列表(在Web控制台中)设置为您的web应用程序的名称。
发布于 2017-01-11 19:57:37
你发布的glassfish-web.xml看起来没问题。
如果您将应用程序部署为EAR,您可能需要如下所示的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>something</application-name>
<display-name>something</display-name>
<module>
<web>
<web-uri>your_webapplication.war</web-uri>
<context-root>/</context-root>
</web>
</module>
<module>
<ejb>your_ejb_services.jar</ejb>
</module>
<library-directory>lib</library-directory>
</application>这只是一个模板示例。你也可以有多个web模块和ejb模块。
如果您通过Glassfish Admin UI进行部署,则可以在部署时设置上下文根:

如果您使用asadmin进行部署,则可以像这样设置上下文根:
asadmin deploy --name something --contextroot / /path/of/your/war.war发布于 2022-02-26 19:58:25
我希望我没有迟到--我一直在为同样的问题而挣扎。现在有一段时间了,不管我怎么尝试,服务器都会输出默认的your server is running page。需要做什么才能在不输入example.com/example的情况下访问example.com,其中示例是在您的glassfish-web.xml中定义的contextroot是ip表重新路由,可以按如下方式完成。
假设您在ubuntu服务器20.04LTS上,以root用户身份执行以下命令
root@example.com:~$
root@example.com:~$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT
root@example.com:~$ iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
root@example.com:~$ iptables -A INPUT -p tcp --dport 443 -j ACCEPT
root@example.com:~$ iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8181你必须让它成为永久的:
root@example.com:~$ iptables-save -c > /etc/iptables.rules
root@example.com:~$ iptables-restore < /etc/iptables.rules并在启动期间调用,
root@example.com:~$ vi /etc/network/if-pre-up.d/iptablesload将以下命令复制并粘贴到由上面的vi打开的iptablesload文件中
#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0别忘了让iptablesload成为可执行文件
root@example.com:~$ chmod +x /etc/network/if-pre-up.d/iptablesload! https://stackoverflow.com/questions/41585188
复制相似问题