[英]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.