2

我正在尝试使用Embeddable Glassfish 应用程序客户端容器。我能找到的唯一资源是上面提到的包含这个诱人代码片段的 javadocs

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();

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

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

4

2 回答 2

3

我可以使用 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方法似乎并没有在单独的 Thread 或任何特殊的东西中调用。我发现我可以简单地提供一个虚拟主程序,它什么都不做,并且在startClient调用返回后立即拥有我的所有应用程序代码。

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

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 进行了更新,并且也提供了一些帮助。

于 2012-05-15T16:33:06.483 回答
1

在 Oracle 的网站上似乎有一些关于使用 ACC 开发客户的文档。

于 2011-07-27T21:12:44.147 回答