访问Tomcat时无需加端口号

本文介绍如何通过配置Apache和Tomcat使Java应用与PHP应用共用80端口,实现无需指定端口号即可访问网站的方法。环境基于Linux CentOS 32位系统,使用Apache 2.2.2和Tomcat 7.0.37。

整合Apache和Tomcat,使得Java工程和PHP工程都能共用80端口,访问网站时,无需在地址栏中加端口号,具体实现如下,感兴趣的朋友可以参考下哈

目的:

整合Apache和Tomcat,使得Java工程和PHP工程都能共用80端口,访问网站时,无需在地址栏中加端口号。

环境说明:

Linux CentOS 32位

Apache 2.2.2

Tomcat 7.0.37

准备工作:

下载mod_jk.so

http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/

打开链接找到合适的文件下载,下载后改名为mod_jk.so

修改Apache相关文件

1、将mod_jk.so上传至/modules目录下

2、在/apache/conf目录下新建文件mod_jk.conf

#Load mod_jk module

LoadModule jk_module modules/mod_jk.so

#Where to find workers.properties

JkWorkersFile conf/workers.properties

#Where to put jk logs

JklogFile logs/mod_jk.log

#Set the jk log level[debug/error/info]

JkLogLevel info

#Select the log format

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

#JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

#JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

#Send servlet for context /examples to worker named ajp13

JkMount /servlet/* ajp13

#Send all files under MyProject for to worker named ajp13

JKMount /MyProject ajp13

3、在/apache/conf目录下新建文件workers.properties

worker.list=ajp13

worker.ajp13.port=8009

worker.ajp13.host=localhost

worker.ajp13.type=ajp13

worker.ajp13.lbfactor=1

4、修改/conf/httpd.conf

Listen 80改为Listen 你的IP:80

ServerName localhost:80

最后一行添加 Include conf/mod_jk.conf

找到DocumentRoot,记住它的值,后面有用。我的是/www/apache/htdocs

5、添加<VirtualHost>节点

复制代码 代码如下:

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com

ServerName www.sample.cn/m

ProxyRequests Off

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass /MyProject http://www.sample.cn/MyProject/pages/login.jsp

ProxyPassReverse /MyProject http://www.sample.cn/MyProject/pages/login.jsp

</VirtualHost>

【注意:】红字部分的名称必须一致,也就是说必须和tomcat下的工程名一致

修改Tomcat相关文件

1、在tomcat下添加ROOT.xml

我的目录是这样的:/opt/tomcat/conf/Catalina/localhost

新建ROOT.xml 

复制代码 代码如下:

<?xml version='1.0' encoding='utf-8'?>

<Context displayName="Welcome to Tomcat" docBase="" path="" debug="0"></Context>

2、修改/conf/server.xml

I.修改默认端口号(也可以不改,默认一般为8080)

<Connector port="9090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

II.检查AJP端口号(8009不可修改,若这一句被注释掉了,取消注释)

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

III.检查<HOST>节点

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">


<think>首先,用户的问题是:“我想了解在使用老版ssh框架,如何通过tomcat获取端口号”。这里的“ssh框架”可能指的是Struts + Spring + Hibernate(SSH)框架,而不是安全外壳协议(SSH)。用户指定了“老版”,意思是旧版本。 用户引用了三个引用: - 引用[1]:列出了常见服务的端口号,如SSH(22)、FTP(21)、HTTP(80)、HTTPS(443)、Tomcat(8080)。 - 引用[2]:详细描述了各种服务使用的端口号,包括HTTP(80)、HTTPS(443)、SSH(22)、Tomcat(8080)等,以及如何检查端口号是否被占用。 - 引用[3]:讨论了在Spring BootCentOS中配置Tomcat使用域名访问,而不需要端口号。 用户的问题是询问在旧版SSH框架下如何通过Tomcat查看端口号。SSH框架通常部署在Tomcat这样的Servlet容器中。 关键点是:如何通过Tomcat获取端口号。在Tomcat服务器中,端口号通常在配置文件中设置,比如server.xml。 在Tomcat中,HTTP连接器的端口号定义在conf/server.xml文件中。例如: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ``` 这里,port="8080"指定了HTTP端口。 现在,用户提到“老版ssh框架”,所以可能需要考虑在应用程序代码中如何获取这个端口号。在Java EE应用中,可以通过Servlet API获取服务器信息。 在Servlet中,可以通过HttpServletRequest对象获取服务器端口。例如: ```java int port = request.getServerPort(); ``` 这适用于任何运行在Servlet容器中的Java Web应用。 用户指定了“SSH框架”,这通常包括Struts、SpringHibernate。在Struts或Spring MVC中,控制器(Action或Controller)中可以访问HttpServletRequest。 例如,在Struts 1.x中(老版),在Action类中: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { int port = request.getServerPort(); // use the port } ``` 在Spring MVC中,类似地: ```java @RequestMapping("/somePath") public ModelAndView handleRequest(HttpServletRequest request) { int port = request.getServerPort(); // use the port } ``` 另外,Tomcat端口号也可以在运行通过系统属性获取,但更常见的是通过请求对象。 用户询问的是“如何通过tomcat查看端口号”,可能意味着在应用程序运行获取它,而不是修改配置文件。 引用中没有直接回答这个问题,但它们提供了端口号的信息。我需要基于用户的问题构建回答。 回答结构: - 必须使用中文。 - 结构化清晰。 - 在行内数学公式使用$...$,但我认为这里可能没有数学公式。 - 独立公式使用$$...$$,如果有需要。 - 生成相关问题。 - 添引用标识,如果引用内容。 引用标识:用户提供了[^1], [^2], [^3],我应该引用相关部分。 针对问题: 1. 解释在Tomcat配置文件中设置端口号。 2. 解释如何在SSH框架应用中获取端口号。 步骤: 1. **配置文件查看**:Tomcat端口号配置在conf/server.xml文件中。 2. **运行获取**:通过HttpServletRequest的getServerPort()方法在代码中获取。 在回答中引用: - 引用[2]提到Tomcat使用8080端口,以及如何检查端口,这相关。 - 引用[3]讨论Tomcat配置,但焦点在域名访问。 生成相关问题: - 基于主题:端口号Tomcat配置、SSH框架部署。 完整回答结构: 1. 引言:解释Tomcat端口号的位置。 2. 方法一:在配置文件中查看。 3. 方法二:在应用程序代码中获取。 4. 引用相关部分。 5. 生成相关问题。 确保回答真实可靠。 </think>在使用老版SSH框架(即基于Struts + Spring + Hibernate的Java Web应用)部署到Tomcat服务器,获取Tomcat端口号有两种主要方法:一是直接查看Tomcat配置文件,二是通过应用程序代码在运行动态获取。以下是详细步骤解释,确保内容真实可靠,基于Tomcat标准配置Java Servlet API。 ### 1. **查看Tomcat配置文件** Tomcat端口号是通过其配置文件定义的,通常在`server.xml`中设置。这是最直接的方法: - **路径**: Tomcat安装目录下的`conf/server.xml`文件。 - **关键配置项**: 查找`<Connector>`元素,其中`port`属性定义了HTTP连接器的端口号。 ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ``` 这里`port="8080"`表示Tomcat的默认HTTP端口是8080。 - **步骤**: 1. 登录服务器,定位到Tomcat的`conf`目录(例如`/usr/local/tomcat/conf`)。 2. 用文本编辑器打开`server.xml`文件。 3. 搜索`<Connector port`,即可找到端口号。 - **注意**: 如果端口号被修改(如改为80或自定义端口),值会相应变化。引用[^2]提到Tomcat默认使用8080端口,这是常见配置[^2]。 ### 2. **在SSH框架应用中获取端口号** 在老版SSH框架中,应用程序部署在Tomcat容器中,可以通过Servlet API获取运行端口号。这适用于Struts 1.x或Spring MVC控制器(假设使用Spring 2.x/Hibernate 3.x等老版本)。以下是实现方法: - **核心方法**: 使用`HttpServletRequest`对象的`getServerPort()`方法,该方法返回当前请求的服务器端口号。 - **代码示例**: - **在Struts 1.x Action类中获取**: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { int port = request.getServerPort(); // 获取端口号 System.out.println("Tomcat端口号: " + port); // 输出到日志 // 其他业务逻辑 return mapping.findForward("success"); } ``` - **在Spring MVC Controller中获取** (老版本spring-webmvc): ```java import javax.servlet.http.HttpServletRequest; import org.springframework.web.servlet.mvc.Controller; import org.springframework.web.servlet.ModelAndView; public class PortController implements Controller { public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) { int port = request.getServerPort(); // 获取端口号 ModelAndView mav = new ModelAndView("result"); mav.addObject("port", port); // 将端口号传递到视图 return mav; } } ``` - **解释**: - `request.getServerPort()`返回Tomcat监听的端口号(如8080)。如果请求是HTTPS,它可能返回8443(取决于Tomcat配置)。 - 此方法在运行动态获取端口号无需重启Tomcat。 - 引用[^2]中提到,了解端口号有助于诊断配置问题(如端口占用或错误)[^2]。 ### 注意事项 - **端口号变更**: 如果修改了`server.xml`中的端口号,应用程序代码中的`getServerPort()`会自动反射新值。 - **安全性**: 在生产环境中,避免硬编码端口号,优先使用动态获取。 - **Tomcat版本兼容性**: 此方法适用于Tomcat 5.x到8.x(老版SSH常用版本),API一致。 - **引用整合**: 引用[^3]讨论了Tomcat域名配置(如去掉端口号),但端口号获取是基础[^3]。引用[^1][^2]确认了Tomcat默认端口8080[^1][^2]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值