如何在客户端将数据传递给 EJBContext?

How to pass data to EJBContext on client side?

我在服务器上有以下拦截器:

@Resource
EJBContext ejbContext;

@AroundInvoke
public Object onInvocation( InvocationContext aInvocationContext ) throws Exception
{
    final Object myValue = ejbContext.getContextData().get("MyKey");
    ...
    Object proceed = aInvocationContext.proceed();
    ...
    return proceed;
}

如何在客户端向 EJBContext 传递数据(“MyKey”)? 我试图查找它,但在查找期间出现 javax.naming.InvalidNameException' 异常或 EJBCLIENT000409:当我调用 getContextData( ).我尝试了几种方法我不知道如果我做错了什么或者 EJBContext 是一些特殊的资源并且不可能在客户端上修改它。

查找名称应该是什么样子?我试过 java:comp/EJBContext, appName/moduleName/EJBContext.

我创建了客户端拦截器。

EJBClientContext.requireCurrent().registerInterceptor( 0, new MyClientInterceptor() );

registerInterceptor 方法 javadoc:

中有重要说明

Note: If an interceptor is added or removed after a proxy is used, this will not affect the proxy interceptor list.

我的客户端拦截器:

import org.jboss.ejb.client.EJBClientInterceptor;
import org.jboss.ejb.client.EJBClientInvocationContext;

public class MyClientInterceptor implements EJBClientInterceptor
{

    @Override
    public void handleInvocation( EJBClientInvocationContext aContext ) throws Exception
    {
        Object myValue =...
        aContext.getContextData().put( "MyKey", myValue );
        aContext.sendRequest();

    }

    @Override
    public Object handleInvocationResult( EJBClientInvocationContext aContext ) throws Exception
    {
        return aContext.getResult();
    }
}