GlassFish应用程序客户端容器

时间:2011-07-24 08:02:12

标签: java glassfish application-client

我正在尝试使用Embeddable Glassfish app client container。 我能找到的唯一资源是上面提到的包含这个诱人的代码片段的javadoc

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

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

有没有人有使用过这方面的经验,或者他们是否可以指向一些解释如何使用它的资源?

2 个答案:

答案 0 :(得分: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 方法似乎不会在单独的线程或任何特殊的线程中调用。我发现在 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进行了更新,并且也提供了一些帮助。

答案 1 :(得分:1)

在Oracle网站上developing clients using the ACC周围似乎有一些不错的文档。