2011-07-24 92 views
2

我试图与Embeddable Glassfish app client container工作。 我能找到的唯一资源是包含这个诱人的代码上述的javadoc片断GlassFish应用程序客户端容器

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

这看起来相当真棒,但我试图让它运行几次,发生各种不同的错误。

有没有人有使用此方面的经验,或者他们可以点我的一些资源,介绍如何使用这项工作的方向是什么?

+0

Tim,可能有助于将错误添加到此问题,以便其他人可以帮助排除故障。另外我会指出,如果您不需要整个EE容器并且无法使Glassfish工作,那么对于Jetty来说这是一个非常受欢迎的用例。 –

+0

@Riyad我想我更想尝试一下使用这个API的用户,因为我没有答案的条码一个coderanch帖子我看不到其他的东西 –

+0

这与我的其他方法相去甚远看到。我能问问你有什么想法吗? – Thufir

回答

3

我有这方面的工作在GlassFish 3.1.2和一个简单的Java Swing UI应用程序。 通过TargetServer指定的主机/端口似乎被忽略,我不得不设置系统属性:

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

得到一个连接,我不是在默认端口上运行。

为了得到这一切来编译,这将有助于如果甲骨文记载,AppClientContainer等都是包:

org.glassfish.appclient.client.acc 

那么你就可以找到所需的编译,这是该.jar文件:

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

的AppClientContainer.startClient试图调用一个方法:

在MyClient.class上,这可能不是你想要的;在我的情况下,我的目标是使这个工作与一个基于Eclipse的应用程序,它也想“拥有”发射。此外,我所需要的OSGI环境似乎完全不符合Glassfish ACC,它具有自己的不兼容的类加载机制。

虽然它所需 startClient调用,主要方法似乎并没有被调用在一个单独的线程或任何特殊。我发现我可以简单地提供一个虚拟主体,它不会执行任何操作,并且在 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. 

而且甲骨文已经倾倒豆validator.jar的SLF4J记录器的实现这与我自己的首选实现相冲突,导致进一步的错误消息。

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

相关问题