我的应用程序是部署在Spring framework 3.1.2
上的基于Apache tomcat 6
的Web应用程序。
我需要在应用程序(服务器)启动时运行正在运行的应用程序端口号和主机名。所以我会在属性上覆盖它,并且需要进行其他bean初始化。
spring是否提供了检索这些详细信息并在Server Startup上设置它的任何选项?..
答案 0 :(得分:5)
查看之前提出的两个问题:Get the server port number from tomcat with out a request和I need to know the HTTP and HTTPS port my java webapp is running on webapp startup。在那里,您将看到如何从连接器获取端口,连接器还具有可为您提供主机名的getDomain方法。
因为你知道如何在没有spring的情况下获得,你可以拥有一个获取这些细节的bean,并为需要这些实例化细节的其他bean提供它们。有几种方法可以做到这一点:
1)创建Spring工厂bean,获取端口,主机名和实例化你想要的bean
2)拥有单独的bean来保存这些细节,并使用该bean构建其他的
3)您使用端口和域覆盖应用程序详细信息,并在实例化需要它们的bean时使用init方法为您的新bean读取它们
答案 1 :(得分:2)
以下是获取端口地址的代码
class IPAddressDemo{
public static String getIpAddressAndPort1() throws MalformedObjectNameException, NullPointerException,
UnknownHostException {
MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"),
Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
String host = InetAddress.getLocalHost().getHostAddress();
String port = objectNames.iterator().next().getKeyProperty("port");
String ipadd = "http" + "://" + host + ":" + port;
System.out.println(ipadd);
return ipadd;
}
}
答案 2 :(得分:-3)
默认情况下,Tomcat将在TCP / IP端口号8080
上运行。
步骤
C:\apache-tomcat-6.0.18\conf\server.xml
(已安装tomcat的地方)在server.xml文件中,找到连接器端口,如下所示
<connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443">
</connector>
端口是您的端口号。
查找主机名:
步骤
1. Navigate to `C:\WINDOWS\system32\drivers\etc`
或者
开始 - &gt;所有程序 - &gt;运行 - &gt;输入'drivers'(不含引号) - &gt; etc
127.0.0.1 localhost
通过此,您可以了解您的主机名是什么。
感谢。
答案 3 :(得分:-4)
已传递给您的doGet或doPost方法的ServletRequest对象具有提供此信息的getServerName()
和getServerPort()
方法。
示例:
public void doGet(ServletRequest request, ServletResponse response) {
System.out.println("Host Name = " + request.getServerName());
System.out.println("Port Number = " + request.getServerPort());
}