我被迫将我的网站移动到静态IP。这要求我在tomcat(Tomee-Plume)上更改我的配置。我不知道该怎么办是将端口80直接映射到网站。例如,旧的集合具有以下隐藏转发设置。
Old Stealth设置。
my.domain - > http://999.999.999.999/Websites/HomeServlet
现在我需要将“/ Websites / HomeServlet”部分的分辨率推送到tomcat(Tomee-Plume)配置中,因为我只使用互联网“A”记录将域名映射到IP。没有能力将“/ Websites / HomeServlet”部分放入互联网“A”记录中。
我猜这种设置很常见,但我不知道它通常被称为进行互联网搜索。
根据Shankar P S的要求,在内容之下添加了内容。
Eclipse中的文件布局
Header.java
package software..website;
public class Header {
public Header() {
}
static StringBuffer getStandardHTMLHeader(){
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?> ");
sb.append(
"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>");
sb.append("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>");
sb.append("<head>");
sb.append("<meta http-equiv='content-type' content='text/html; charset=UTF-8' />");
sb.append("<META NAME=\"ROBOTS\" CONTENT=\"NOINDEX, NOFOLLOW\" />");
sb.append("<META NAME=\"description\" content=\" is a software application that does mathematical models of the space elevator.\" />");
sb.append("<!-- **** layout style-sheet **** -->");
sb.append("<link rel='stylesheet' type='text/css' href='./style/style.css' />");
sb.append("<!-- **** color scheme style-sheet **** -->");
sb.append("<link rel='stylesheet' type='text/css' href='./style/blue.css' />");
sb.append("</head>");
return sb;
}
}
HomeServlet.java
package software..website;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class home
*/
@WebServlet("/HomeServlet")
public class HomeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HomeServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at:
// ").append(request.getContextPath());
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println(Header.getStandardHTMLHeader() );
out.println("<body>");
out.println(Menu.getStandardHTMLMenu());
blah, blah, blah......
blah, blah, blah......
blah, blah, blah......
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name></display-name>
<description>
The web site for software
</description>
<!-- -->
<servlet>
<servlet-name>HomeServlet</servlet-name>
<servlet-class>software..website.HomeServlet</servlet-class>
<init-param>
<param-name>isVirtualWebappRelative</param-name>
<param-value>1</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protect Donation page</web-resource-name>
<url-pattern>/DonateServlet</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
** web.xml v2 **
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd“id =”WebApp_ID“version =”3.0“&gt;
<!-- ========================================================== -->
<!-- General Info -->
<!-- ========================================================== -->
<display-name>Abc</display-name>
<description>
The web site for Abc software
</description>
<!-- ========================================================== -->
<!-- Home Servlet -->
<!-- ========================================================== -->
<servlet>
<servlet-name>HomeServlet</servlet-name>
<servlet-class>software.abc.website.HomeServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map the HomeServlet name to the URI /HomeServlet (main page for site) -->
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/AbcLandingPage</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protect Donation page</web-resource-name>
<url-pattern>/DonateServlet</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- ========================================================== -->
<!-- Welcome Files -->
<!-- ========================================================== -->
<!-- The main page for the site will be the HomeServlet servlet (http://website/AbcLandingPage) -->
<!-- No mapping is defined for other folders (http://website/someFolder/AbcLandingPage), -->
<!-- so one of the other files will be displayed (index.html, index.htm, index.jsp) -->
<welcome-file-list>
<welcome-file>AbcLandingPage</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
仍然可以获得tomcat欢迎页面。
这适用于我的Windows 7工作站和Eclipse Mars 2(4.5.2)
<Context docBase="Websites" path="" reloadable="true" source="org.eclipse.jst.jee.server:Websites"/></Host>
但这在我的Fedora 23服务器上不起作用。
<Context path="/Websites" docBase="Websites/HomeServlet" debug="0" reloadable="true"></Context>
Window 7(Works)
"C:\apache-tomee-plume\wtpwebapps\Websites\WEB-INF"
"C:\apache-tomee-plume\wtpwebapps\Websites\META-INF"
"C:\apache-tomee-plume\wtpwebapps\Websites\style"
Fedora 23(抛出异常)
/opt/tomee/webapps/docs/{the directory has files in it}
/opt/tomee/webapps/host-manager/{the directory has files in it}
/opt/tomee/webapps/manager/{the directory has files in it}
/opt/tomee/webapps/ROOT/{the directory has files in it}
/opt/tomee/webapps/Websites/{the directory has one directory, no files in it}
/opt/tomee/webapps/Websites/HomeServlet.unpacked/{the directory is empty}
/opt/tomee/webapps/Websites.war
答案 0 :(得分:1)
以下更改列表适用于 WEB-INF / web.xml 文件,而不是服务器级 conf / web.xml 文件。前提条件是 和 位于 XML节中。手头的任务不需要 XML元素。它被添加,所以第一个用户,在重新启动后,没有遇到性能不佳。
<servlet>
<servlet-name>HomeServlet</servlet-name>
<servlet-class>software.abc.website.HomeServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
还需要制作 XML节。 节中的 必须与 节中的 一致。 不需要与 匹配。 标记必须与 节中的 标记匹配。
<!-- Map the HomeServlet name to the URI /HomeServlet (main page for site) -->
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/AbcLandingPage</url-pattern>
</servlet-mapping>
还必须添加 节。 条目按列出的顺序处理。 的值必须与配置文件中较早的 节中 的值相匹配。在此示例中,值为 AbcLandingPage 。
<!-- so one of the other files will be displayed (index.html, index.htm, index.jsp) -->
<welcome-file-list>
<welcome-file>AbcLandingPage</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
下面列出了完整的 web.xml 文件。 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" ID =&#34; WebApp_ID&#34;版本=&#34; 3.0&#34;&GT;
<!-- ========================================================== -->
<!-- General Info -->
<!-- ========================================================== -->
<display-name>Abc</display-name>
<description>
The web site for Abc software
</description>
<!-- ========================================================== -->
<!-- Home Servlet -->
<!-- ========================================================== -->
<servlet>
<servlet-name>HomeServlet</servlet-name>
<servlet-class>software.abc.website.HomeServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map the HomeServlet name to the URI /HomeServlet (main page for site) -->
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/AbcLandingPage</url-pattern>
</servlet-mapping>
<!-- ========================================================== -->
<!-- Welcome Files -->
<!-- ========================================================== -->
<!-- The main page for the site will be the HomeServlet servlet (http://website/AbcLandingPage) -->
<!-- No mapping is defined for other folders (http://website/someFolder/AbcLandingPage), -->
<!-- so one of the other files will be displayed (index.html, index.htm, index.jsp) -->
<welcome-file-list>
<welcome-file>AbcLandingPage</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
以下更改列表适用于 conf / server.xml 文件。需要将新的XML元素添加到 XML节中。 在 元素中,需要添加 元素。 元素的 path = 属性必须为空。 docbase = 属性需要等于.WAR文件根目录。在此示例中 Abc_Website 。我不确定 debug = 属性是否需要位于context元素中。但我不打算花时间测试它。我也不确定是否需要 reloadable = 属性。但是为了节省时间,它再次没有通过删除 reloadable = 属性进行测试。
.
.
.
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="Abc_Website" debug="0" reloadable="true"></Context>
.
.
.
自动覆盖Tomcat欢迎页面。为了访问管理器应用程序,需要输入URI http://999.999.999.999/manager/html,而不仅仅是域名。
根据Tom Tomas用户电子邮件列表中Mark Tomas的回复,这项技术还有更多改进空间。选址的文档是(http://tomcat.apache.org/tomcat-9.0-doc/config/context.html#Naming)页面。
对于我的日食Mars.2工作区,我还需要做更多的步骤
1.停止Tomcat
2.移动而不是复制&#34; $ {CATALINA_HOME} / webapps / ROOT&#34;到另一个目录。建议不要删除&#34; $ {CATALINA_HOME} / webapps / ROOT&#34;因此,如果您的工作区中存在不同的内容,以防止这些说明为您工作,则可以恢复它
3.重命名Web项目ROOT ## 000,其中000是版本号。如果您正在使用git,请不要忘记重命名操作系统文件夹名称
4.从Web项目上下文菜单中选择&#34;属性&#34;选项。
5.选择&#34; Web项目设置&#34;。
6.更改&#34; Context root&#34;到&#34; /&#34;
7.按&#34;应用&#34;按钮,然后按&#34;确定&#34;按钮。
8.找到&#34;服务器&#34;包含与Eclipse集成的Tomcat服务器的Eclipse实例的项目
9.展开要更改的Tomcat实例
10.双击&#34; server.xml&#34;文件。
11.找到XML元素
12.改变&#34;路径&#34; XML属性只是&#34; /&#34;。
-<Context docBase="ROOT##000" path="/" reloadable="true" source="org.eclipse.jst.jee.server:ROOT##000"/>
答案 1 :(得分:0)
你需要做两件事。将Tomcat的默认端口从8080更改为80,并允许Tomcat的请求命中您的项目。试试这个。
在文件{TOMCAT_CATALINA} /conf/server.xml中,查找Protocol HTTP / 1.1的Connector标记。这将映射到8080.将其更改为80,如下所示。
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="750"
acceptCount="750"
redirectPort="8443" />
然后,在同一个文件中,在Host标签下添加。 (我假设你的WAR文件名是网站。这在本页的方法2.1中解释 - http://wiki.apache.org/tomcat/HowTo#How_do_I_make_my_web_application_be_the_Tomcat_default_application.3F
<Context path="" docBase="Websites" debug="0" reloadable="true"></Context>
现在,对http://my.domain的调用将到达您的WAR文件。
接下来,将servlet映射到项目的web.xml中的默认路径。
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
现在,对http://my.domain的来电相当于http://YOUR_IP/Websites/HomeServlet