gpt4 book ai didi

java - Glassfish 4 : how to set application or module name for JNDI

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:41 24 4
gpt4 key购买 nike

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

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

我想改变这部分:

longBundleName_version

我的意思是,当我部署 bundle 时,这部分必须从 [glassfish-]application.xml 或 [glassfish-]-ejb-jar.xml 或任何其他 xml 描述符设置。我希望我的 ejb 的 jndi 名称如下:

java:global/newBundleNameWithoutVersion/etc

我无法在这些文件中找到我必须设置的问题。全部variants我在互联网上发现不再受支持,我自己尝试的一切都没有用。你能帮帮我吗?

请不要提供 mappedName,因为它只能(!)用于远程 bean。我确实使用了同时在本地和远程的 bean。

如果有人参与 glassfish 开发,您能否至少指出我必须检查哪些包才能自己找到问题?我将不胜感激。

最佳答案

您应该这样注释您的 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]]]

至少我能够像这样注入(inject):

<!-- language:java -->

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

所以我认为手动查找也应该可行。

关于java - Glassfish 4 : how to set application or module name for JNDI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24150521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com