당신은 원격 연결 및 IP 주소를 얻는 시도 할 수 있습니다. org.jboss.as.security-api
은 향후 버전에서 제거 될 수있는 더 이상 사용되지 않는 모듈이기 때문에 얼마나 신뢰할 수 있는지 잘 모르겠습니다.
즉, folowing 시도 후 :
컨테이너 인터셉터 :
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import java.net.InetAddress;
import java.security.Principal;
import org.jboss.remoting3.Connection;
import org.jboss.remoting3.security.InetAddressPrincipal;
import org.jboss.as.security.remoting.RemotingContext;
public class ClientIpInterceptor {
@AroundInvoke
private Object iAmAround(final InvocationContext invocationContext) throws Exception {
InetAddress remoteAddr = null;
Connection connection = RemotingContext.getConnection();
for (Principal p : connection.getPrincipals()) {
if (p instanceof InetAddressPrincipal) {
remoteAddr = ((InetAddressPrincipal) p).getInetAddress();
break;
}
}
System.out.println("IP " + remoteAddr);
return invocationContext.proceed();
}
}
JBoss에 ejb3.xml :
<?xml version="1.0" encoding="UTF-8"?>
<jboss xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:jee="http://java.sun.com/xml/ns/javaee"
xmlns:ci ="urn:container-interceptors:1.0">
<jee:assembly-descriptor>
<ci:container-interceptors>
<jee:interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>ClientIpInterceptor</interceptor-class>
</jee:interceptor-binding>
</ci:container-interceptors>
</jee:assembly-descriptor>
</jboss>
JBoss에 배포-structure.xml :
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="org.jboss.remoting3" />
<module name="org.jboss.as.security-api" />
</dependencies>
</deployment>
</jboss-deployment-structure>
을
연결 연결 = RemotingContext.getConnection() << is null :( – user1028269
@user1028269이 솔루션을 EAP7에서 확인하고 작동합니다 (https://github.com/fedesierr/eap7-ejb-remote 참조) –
jboss-ejb3을 놓쳤습니다. .xml 인터셉터 설정, 고마워. – user1028269