0

我正在尝试为 Websphere 7 编写 Java EE 应用程序客户端以访问部署在 WebSphere 服务器上的 EJB,但我似乎无法使用 JNDI 解析 EJB(我得到“找不到名称 comp/env/ejb在上下文“java:”'中。

我在 RBD 7.5 中将该项目创建为“应用程序客户端项目”,并使用“WebSphere Application Server v.7.0 应用程序客户端”来运行它。

我在创建初始上下文并在运行配置中提供信息时都尝试了(但不是同时)指定提供程序 URL,但没有任何区别。

我可能错过了一些非常简单的东西。

顺便说一句,launchclient 是否必须在 WebsShere 服务器上运行,或者我可以在另一台服务器上重新复制它吗?

4

2 回答 2

0

你读过这本红皮书吗?向您展示如何做到这一点。 http://www.redbooks.ibm.com/redpapers/pdfs/redp4885.pdf

于 2012-11-15T01:55:28.563 回答
0

好的,看起来你正在到达某个地方!

侧边栏:这可能是设置应用程序服务器最令人沮丧的部分,因为文档低于标准,并且教程通常针对以前做过的人。我更像是一个 JBoss 人,我真的希望有更多 WebSphere 知识的人能够提供帮助,因为他们可能知道他们头脑中的答案,而我所能做的就是将您推向我认为的方向。

这是我的多 EE 上下文查找的示例:

@SuppressWarnings("unchecked")
public static <T> T getObjectFromContext(Class<T> clazz, Namespace namespace)
{
    // java:app/ProductionEJB/OptionsDao!com.danielbchapman.production.beans.SomeDaoRemote
    String lookup;
    if(JEE6)
        lookup = "java:global/" + namespace.toEnterpriseSix() + "/"
                + clazz.getSimpleName().replaceAll("Remote", "") + "!" + clazz.getName();
    else
        lookup = "ProductionEE5/" + clazz.getSimpleName().replaceAll("Remote", "") + "/remote";

    T ret = (T) getObjectFromContext(lookup);
    return ret;
}

你可以看到上下文字符串(JBoss7/EE6)是:

java:/global/#{JAR_NAME}/#{IMPLEMENTATION_CLASS}!#{REMOTE_INTERFACE}

对于我的 EE5 查找(JBoss 5.1GA)是:

#{EAR_NAME}/#{IMPLEMENTATION_CLASS}

为了使这件事变得简单,您需要做的是跳入您的管理工具并查看您的部署。你会看到上下文,一般来说,每个实现都会有一点不同。有一个标准,据我所知,每个人都有自己的看法。(忽略我的“命名空间”类,它基本上只是有更多信息,无论是java:app还是java:global.

发布更多您的信息,我会尽力将您推向正确的方向。另外,寻找有关它的教程。我敢肯定这是微不足道的。

于 2012-11-09T22:29:56.030 回答