Client Remote Address(Hostname or IP) into EJB Interceptor.
paatalom Oct 10, 2017 1:43 PMhello team,
I'm trying to retriev remote client address (IP Address) and client jndi username into my ejb interceptor. but no success.
Is there any example how to do this ?
1. EJB Session Bean Sample Code :
@Stateless
@Local(MyLocalInterface.class)
@Remote(MyRemoteInterface.class)
@RolesAllowed({"Role1", "Role2", "Role3"})
@Interceptors({MyEjbInterceptor.class})
public class MySessionBean implements MyLocalInterface, MyRemoteInterface {
@RolesAllowed("Role1")
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public String someMethod() throws CentrProcessException {
try {
return "Hello From Server";
} catch (Exception e) {
e.printStackTrace();
}
}
}
Here is my EJB Interceptor Class :
public class MyEjbInterceptor{
@AroundInvoke
public Object handleEJBCall(InvocationContext context) throws Exception {
Map<String, Object> cData = context.getContextData();
if (cData != null) {
Set<String> keys = cData.keySet();
for (String key : keys) {
Object value = cData.get(key);
System.out.println("key = " + key + ", value = " + value.toString());
}
}
Object params[] = context.getParameters();
if (params != null) {
for (Object param : params) {
System.out.println(" param = " + param.toString());
}
}
System.out.println("context.getTarget() = " + context.getTarget());
System.out.println("context.getTimer() = " + context.getTimer());
String currentThreadName = Thread.currentThread().getName();
System.out.println("currentThreadName = " + currentThreadName);
System.out.println("--------------------------" + context.getMethod());
return context.proceed();
}
}
Everything is null or empty.
I found some forums that told it is possible to get ip address from Thread name , but in my case is doesn't work. Thread name is like : "default task-14"
Task is very easy : I want check that remote client username has permission to call beans from that ip addres .... I want set up username and ip address mapping by myself.
Please hint any solution.
Best Regards.
Paata.