【问题标题】:GlassFish Application Client ContainerGlassFish 应用程序客户端容器
【发布时间】:2012-05-16 00:58:14
【问题描述】:

我正在尝试使用Embeddable Glassfish app client container。 我能找到的唯一资源是上面提到的 javadocs,其中包含这个诱人的代码 sn-p

import org.glassfish.appclient.client.acc.AppClientContainer;
import org.glassfish.appclient.client.acc.config.TargetServer;

AppClientContainerBuilder builder = AppClientContainer.newBuilder(
   new TargetServer("localhost", 3700));

AppClientContainer acc = builder.newContainer(new File("myAC.jar").toURI());

(或者,或者)

AppClientContainer acc = builder.newContainer(MyClient.class);

那么,

acc.startClient(clientArgs);
// The newContainer method returns as soon as the client's main method returns,
// even if the client has started another thread or is using the AWT event
// dispatcher thread 
// At some later point, the program can synchronize with the app client in
// a user-specified way at which point it could invoke

acc.stop();

这看起来非常棒,但我试图让它运行几次,但出现了各种不同的错误。

有没有人有任何使用此的经验,或者他们可以向我指出一些解释如何使用它的资源的方向?

【问题讨论】:

  • Tim,可能有助于将错误添加到此问题中,以便其他人可以帮助进行故障排除。我还要指出,如果您不需要整个 EE 容器并且无法让 Glassfish 工作,这是 Jetty 非常流行的用例。
  • @Riyad 我想我更想了解一下谁在使用这个 API,因为一个没有答案的 coderanch 帖子我看不到其他任何东西
  • 这与我见过的其他方法相去甚远。我能问一下你的想法吗?

标签: java glassfish application-client


【解决方案1】:

我在 Glassfish 3.1.2 和一个简单的 Java Swing UI 应用程序中使用了这个。 TargetServer 指定的主机/端口似乎被忽略了,我必须设置系统属性:

org.omg.CORBA.ORBInitialHost = hostname
org.omg.CORBA.ORBInitialPort = 2037

获取连接,因为我没有在默认端口上运行。

要编译所有内容,如果 Oracle 记录 AppClientContainer 等在包中会有所帮助:

org.glassfish.appclient.client.acc

然后你可以找到编译需要哪些.jars,分别是:

gf-client,jar, gf-client-module.jar, acc-config.jar

AppClientContainer.startClient 尝试调用一个方法:

public static void main(String[] args)

在 MyClient.class 上,这可能不是您想要的;在我的例子中,我的目标是使用基于 Eclipse 的应用程序来完成这项工作,该应用程序也想“拥有”启动。此外,我需要的 OSGI 环境似乎与 Glassfish ACC 完全不一致,有自己不兼容的类加载机制。

虽然 startClient 调用需要它,但 main 方法似乎不会在单独的线程或任何特殊的线程中调用。我发现我可以简单地提供一个虚拟主程序,它什么都不做,并且在 startClient 调用返回后直接拥有我的所有应用程序代码。

整个 ACC 实现似乎是将独立客户端连接到 Glassfish 3 上运行的应用程序的唯一受支持方式。与 v2 提供的简单性相比,它相当不令人满意。 .jar 的巨大列表包括我根本不感兴趣的各种东西,实际上在启动时我看到了这条消息:

15-May-2012 17:49:27 com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient
INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default.

Oracle 还在 bean-validator.jar 中转储了一个 SLF4J 记录器实现,它与我自己的首选实现冲突,导致进一步的错误消息。

http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html 上的 Glassfish EJB 常见问题解答已针对 v3 进行了更新,也提供了一些帮助。

【讨论】:

    【解决方案2】:

    Oracle 的网站上似乎有关于 developing clients using the ACC 的大量文档。

    【讨论】:

      猜你喜欢
      • 2014-11-13
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 2014-11-14
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多