java - GlassFish 应用程序客户端容器

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

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

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

最佳答案

我使用 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

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

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 记录器实现,该实现与我自己的首选实现相冲突,导致出现进一步的错误消息。

Glassfish EJB 常见问题解答:http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html已更新为 v3,也有一些帮助。

关于java - GlassFish 应用程序客户端容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6805643/

相关文章:

java - 构建 javamail-android

java - 找不到媒体类型 MessageBodyWriter=Application/json,glassfish

java - 应用程序客户端和独立客户端之间的区别

java - EJB远程应用程序客户端

java - IntelliJ IDEA : Jump to interface implementation if there is only one implementation available

java - 从 JavaFX 2.0 中的 TableView 读取选择

java - 如何在Java中解析适用于所有分隔符的查询参数?

java - 使用junit设置类路径时出错

java - Glassfish OpenSSO 说明(从哪里下载 OpenSSO)?

Java EE 6 应用程序客户端登录