繁体   English   中英

Glassfish 4:如何为JNDI设置应用程序或模块名称

[英]Glassfish 4: how to set application or module name for JNDI

我在OSGi捆绑包中使用EJB。 现在,当我需要获取EJB时,我就会有很长的jndi,例如:

bean = (InterfaceName) ctx.lookup("java:global/longBundleName_version/OrganizationDirBean!and.plus.path.and.InterfaceName");

我要更改此部分:

longBundleName_version

我的意思是,当我部署捆绑软件时,必须从[glassfish-] application.xml或[glassfish-]-ejb-jar.xml或任何其他xml描述符中设置此部分。 我希望我的ejb的jndi名称像这样:

java:global/newBundleNameWithoutVersion/etc

我找不到必须在这些文件中设置的问题。 我在互联网上找到的所有变体都不再受支持,我自己尝试的所有方法都无法正常工作。 你可以帮帮我吗?

请不要提供mapdName,因为它只能用于远程bean。 我确实使用同时位于本地和远程的bean。

如果有人参与了玻璃鱼的开发,您至少可以指出我必须检查哪些捆绑物才能自己找到问题? 我将非常感谢。

您应该这样注释您的EJB

@Remote(value = YourInterface.class)
@Stateless(mappedName = "java:global/fancy")

之后, GF日志显示:

EJB5182:Glassfish-specific (Non-portable) JNDI names for EJB YourInterfaceImpl: [java:global/fancy, java:global/fancy!com.example.YourInterface]]]

至少我能够像这样注入:

<!-- language:java -->

@EJB(lookup="java:global/fancy")

因此,我认为手动查找也应该起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM