java - 在 GlassFish Server 上创建并运行应用程序客户端

标签 java jakarta-ee netbeans glassfish ejb

因为this example of Creating and Running an Application Client on the GlassFish Server无法启动,我向 Netbeans 和 Glassfish 提交了错误:

https://netbeans.org/bugzilla/show_bug.cgi?id=247484

https://java.net/jira/browse/GLASSFISH-21215

如何运行应用程序客户端?

我关注了tutorial构建 EAR。它按预期部署:

thufir@dur:~$ 
thufir@dur:~$ glassfish-4.1/glassfish/bin/asadmin list-applications
Nothing to list.
No applications are deployed to this target server.
Command list-applications executed successfully.
thufir@dur:~$       
thufir@dur:~$ glassfish-4.1/glassfish/bin/asadmin deploy NetBeansProjects/EntAppEJB/dist/EntAppEJB.ear 
Application deployed with name EntAppEJB.
Command deploy executed successfully.
thufir@dur:~$ 
thufir@dur:~$ glassfish-4.1/glassfish/bin/asadmin list-applications
EntAppEJB  <ear, appclient, ejb>  
Command list-applications executed successfully.
thufir@dur:~$  

The JNLP file用于 Java Web Start (JWS) 的启动和下载,如文档所示:

enter image description here

点击“启动”下载the JNLP :

thufir@dur:~$  
thufir@dur:~$ ll Downloads/EntAppClient 
-rw-r--r-- 1 thufir thufir 40314 Sep 26 10:20 Downloads/EntAppClient
thufir@dur:~$ 
thufir@dur:~$ mv Downloads/EntAppClient Downloads/EntAppClient.jnlp
thufir@dur:~$ 

根据 Glassfish 文档:

Java Web Start

Java Web Start allows your application client to be easily launched and automatically downloaded and updated. It is enabled for all application clients by default. For more information, see Using Java Web Start.

GlassFish 服务器开源版 应用开发指南4.0版 第172页

Downloading and Launching an Application Client

If Java Web Start is enabled for your deployed application client, you can launch it for testing. Simply click on the Launch button next to the application client or application's listing on the App Client Modules page in the Administration Console.

GlassFish 服务器开源版 应用开发指南4.0版 第176页

但是,the JNLP fails to execute :

UserError: ACC007

错误:

org.glassfish.appclient.client.acc.UserError: ACC007: The app client file /___JWSappclient/___app/EntAppEJB/EntAppEJBClient/EntAppClientClient.jar does not contain a manifest; the app client container cannot process it.  Embedded programs should pass URIs with scheme "jar:" for JAR files and scheme "file:" for directories.

请注意,该错误与 EntAppClientClient.jar 有关,而不是与 EntAppClient.jar 有关。

我可以在错误报告中提供哪些附加信息?我至少会链接到这个问题并添加 the JNLPlog of javaws运行它。还有什么有用的?

Glassfish 日志,或至少一部分:

[2014-09-26T10:25:29.424-0700] [glassfish 4.1] [SEVERE] [] [javax.enterprise.system.container.appclient] [tid: _ThreadID=27 _ThreadName=http-listener-1(4)] [timeMillis: 1411752329424] [levelValue: 1000] [[
  Adapter[/___JWSappclient/___app/EntAppEJB] EntAppEJBClient/EntAppClientClient.jar
java.lang.NullPointerException
    at org.glassfish.appclient.server.core.jws.servedcontent.StreamedAutoSignedStaticContent.process(StreamedAutoSignedStaticContent.java:119)
    at org.glassfish.appclient.server.core.jws.RestrictedContentAdapter.processContent(RestrictedContentAdapter.java:264)
    at org.glassfish.appclient.server.core.jws.RestrictedContentAdapter.serviceContent(RestrictedContentAdapter.java:228)
    at org.glassfish.appclient.server.core.jws.AppClientHTTPAdapter.service(AppClientHTTPAdapter.java:190)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:744)
]]

[2014-09-26T10:25:29.709-0700] [glassfish 4.1] [WARNING] [NCLS-CORE-00091] [javax.enterprise.system.core] [tid: _ThreadID=24 _ThreadName=http-listener-1(1)] [timeMillis: 1411752329709] [levelValue: 900] [[
  Unable to set customized error page
java.lang.NullPointerException
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:171)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:744)
]]

最佳答案

我建议使用 glassfish 3.1 和 jdk 1.7_10,这不需要对您的应用程序进行签名。 我建议您这样做或签署您的应用程序以在 jdk 1.7 update 45 或更高版本中工作。 来自墨西哥的问候

关于java - 在 GlassFish Server 上创建并运行应用程序客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26065700/

相关文章:

java - 如何使用java socket使用imap从gmail中读取邮件

java - JBoss部署后调用方法

java - Netbeans 7.1 运行旧代码而不是新代码

java - 为什么空方法 appendTo 有意义?

java - 在 SWT/JFace RCP 应用程序中填充巨大的表

java - JSF:禁用组件时,其值不会进入请求映射参数。有解决方法吗?

java - 安装 GlassFish Server 时出错(无效的 SwiXML 描述符)

java - 有状态 EJB 生命周期问题

java - 即使在 WebServlet 注释中指定 "loadonstartup"元素之后,Tomcat 也不会选择 servlet

java - 自动化 GUI 测试