2013-04-26 56 views
0

我們的應用程序依靠AuthorizationModule來過濾遠程上下文中的某些IP地址。這個模塊在JBoss 5.1.0.GAwith a known workaround)上完美工作,但在EAP-6.1.0.Alpha上失敗,因爲Thread名稱模式發生了明顯變化。在JBoss 7的AuthorizationModule中獲取遠程客戶端IP

問:是否可以在以下上下文中獲取客戶端IP地址?

import org.jboss.security.authorization.modules.AbstractAuthorizationModule; 

public class MyAuthorizationModule extends AbstractAuthorizationModule { 
    @Override 
    public int authorize(Resource resource) { 
     //Caller is a standalone Java client, that connects to JBoss 7.x using EJB Remoting 
     String callerIP = ...; 
    } 
} 

我試過到目前爲止:

  1. 調用java.rmi.server.RemoteServer.getClientHost()。這導致ServerNotActiveException

  2. 解析JBossThread名稱(relateddiscussions)。

+0

爲什麼不用JBoss配置過濾IP地址,使用org.apache.catalina.valves.RemoteAddrValve閥? – Thomas 2013-05-04 19:59:45

+0

@Thomas:我認爲這隻會在[web]模塊中有用,而不適用於過濾_remoting_連接? – 2013-06-03 17:05:45

回答

0

我解決了我的問題,從JBoss Community的一些幫助。然而,這不是一個優雅的解決方案,因爲我最終修補了應用程序服務器(EJB3模塊)的內部。查看社區帖子瞭解更多詳情。