为ejb调用提供其他参数

时间:2017-02-23 06:55:41

标签: java java-ee ejb

在我正在进行的项目中,我们需要在ejb调用中添加一些额外的参数。 我们不会将这些参数作为常规ejb接口参数放置,因为我们已经有很多接口并且更改大部分接口会很麻烦(加上它与逻辑无关,这些是一些额外的参数被保存在数据库中,称之为副作用。)

所以到目前为止,我们使用weblogic作为我们的应用程序服务器(10.3.4,Java 6,JavaEE 5),我们为此问题找到的解决方案是创建一个包装器ejb,它将接受真正的方法目标,它的参数当然还有其他参数。 然后,包装器将在事务上存储其他参数,创建新的初始上下文并查找目标ejb。

包装器ejb函数如下所示:

public Object invokeWithAdditionalParameters (MethodSignature methodSignature, Object[] args, SomeAdditionalParameter p) {
    transaction.putResource("additionalParam", p);
    InitialContext ctx = new InitialContext();
    Object service = ctx.lookup(methodSignature.buildLookupName());
    return methodSignature.getMethod().invoke(service, args);
}

MethodSignature保存我们想要调用的目标ejb方法。

我不知道这个解决方案是否可以接受,是否应该缓存我们的InitialContexts,因为我们已经在服务器中,并且不需要对jndi树进行昂贵的网络调用,但也许我和#39;我错了......

谢谢你, 阿维亚德。

0 个答案:

没有答案