Java 如何以编程方式和基于IP的方式限制对.war文件的访问?

Java 如何以编程方式和基于IP的方式限制对.war文件的访问?,java,jboss,limit,Java,Jboss,Limit,我在几个JBoss 5.1实例中部署了一堆.ear文件。现在,我需要将对其中一个应用程序的访问限制为不同的IP地址,具体取决于它的宿主服务器。应用程序的结构是 application.ear文件 |->嵌入的.jar文件 |->嵌入的.war文件 我知道如何通过编辑相关应用程序的WEB-INF/WEB.xml来做到这一点,但我要处理的是定期进行的自动化部署,并且不同服务器之间的限制不同 因此,我想在每台服务器上放置一个包含允许的IP地址的配置文件,并通过让我的应用程序读取这些地址并在JBoss

我在几个JBoss 5.1实例中部署了一堆.ear文件。现在,我需要将对其中一个应用程序的访问限制为不同的IP地址,具体取决于它的宿主服务器。应用程序的结构是

application.ear文件
|->嵌入的.jar文件
|->嵌入的.war文件

我知道如何通过编辑相关应用程序的
WEB-INF/WEB.xml
来做到这一点,但我要处理的是定期进行的自动化部署,并且不同服务器之间的限制不同

因此,我想在每台服务器上放置一个包含允许的IP地址的配置文件,并通过让我的应用程序读取这些地址并在JBoss start上相应地锁定自己来限制访问,这是一种可行的方法。但是我找不到任何关于如何通过编程限制对应用程序的访问的文档

例如,EJB安全性能够做到这一点吗?

我认为适合您的场景使用。您可以通过在
.WAR/WEB-INF/context.xml
文件下添加IP地址对每个应用程序进行限制,也可以通过在
deploy/jbossweb.sar/server.xml
中配置来全局设置。该阀还支持正则表达式

配置示例:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="1.1.1.2,1.1.1.3,1.1.4.*" />


谢谢CoolBeans。但我如何能在每个应用程序中动态地执行此操作?我无法在生成期间编辑.war文件的内容。我需要对40多台服务器单独执行此操作。在jboss服务器中全局设置它对您来说是一个选项吗?服务器上部署的其他应用程序是否存在全局设置问题?如果我可以应用基于上下文的过滤器,那么全局可配置设置肯定是我最喜欢的解决方案。感谢你的帖子,我找到了,所以我会试试这个!看起来很有希望!:)是的,这就是我所指的在jbossweb.sar下的server.xml中添加阀门。我无法让它工作。我在server.xml中的不同位置放置了一个包含path和docBase的上下文标记,JBoss不断告诉我“.JBossXBRuntimeException:上下文不能出现在这个位置。服务器的预期内容是无序的\u顺序:侦听器*服务*属性?”