如何强制openEJB忽略mappedName并改为使用openejb.jndiname.format

时间:2011-08-08 03:13:47

标签: openejb

我有一个EJB:

@Stateless(mappedName = "MetadataFacade")
public class MetadataFacade implements MetadataFacadeRemote {

和openEJB配置使用:

-Dopenejb.jndiname.format={ejbClass.simpleName}#{interfaceClass}

当嵌入式openEJB启动时,它会忽略openejb.jndiname.format选项并创建不正确的JNDI名称:

INFO   info, Jndi(name=MetadataFacade) --> Ejb(deployment-id=MetadataFacade)

如何配置它以使用openejb.jndiname.format选项并创建类似于的以下JNDI名称:

MetadataFacade#my.package.MetadataFacadeRemote

如果openEJB无法做到,我会感谢任何解决方法。

2 个答案:

答案 0 :(得分:0)

现在没有任何内容,但我们可以添加一个标志来配置它。你用的是哪个版本?

答案 1 :(得分:0)

由于不支持所描述的用例,我创建了一个补丁

mappedName.patch

禁用原始行为,而是添加一个新变量 ejbClass.mappedName ,可以在 openejb.jndiname.format 中使用。


该补丁适用于:

的头部(修订版1034599)
 http://svn.apache.org/repos/asf/openejb/tags/openejb-3.1.4

使用以下方法将其应用于来源:

patch -p0 -i mappedName.patch

然后使用:

构建openEJB
mvn -Dmaven.{test,itest}.skip -Dassemble clean install

并添加

container/openejb-core/target/openejb-core-3.1.4.jar

作为第一个条目到你的类路径。