[英]Why does a LoginContext producer work in a Java EE/Servlet container?
[英]Java EE getting servlet container port
我想以编程方式获取部署了我的Java EE应用程序的servlet容器端口。 我假设在JMX bean中会有一些东西,但我似乎找不到任何东西。
在任何人说从HttpRequest或HttpResponse获取端口之前,应该注意这个进程在servlet后面运行,并且没有与请求或响应的交互。
一种可能的“hack”是在运行时解析server.xml并识别配置的端口。
但看起来有一种方法可以使用JMX / MBeans来实现。
我碰巧需要从请求中提取tomcat端口。 这样我就可以比较并判断servlet请求是来自tomcat端口http://localhost:8080
还是来自apache port http://localhost/
通过这样做,我可以确保只通过严格使用tomcat端口并通过apache端口拒绝来处理请求。 这可能有助于设置请求不允许通过apache访问外部世界的安全配置。 tomcat端口仅在本地网络中可用。
方法是创建一个tomcat阀门(假设你知道它是什么)实现了org.apache.catalina.valves.ValveBase。 此接口提供org.apache.catalina.connector.Request作为参数。
每个请求:
using request.getConnector().getPort() which returns 8080. Then say.
if ( request.getServerPort() != request.getConnector().getPort() ) {
response.getWriter().print("<span>access denied</span>");
} else {
getNext().invoke(request, response);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.