无法通过 Glassfish 4.1 Web 管理员创建任何 JMS 资源
Posted
技术标签:
【中文标题】无法通过 Glassfish 4.1 Web 管理员创建任何 JMS 资源【英文标题】:Cannot create any JMS resource through Glassfish 4.1 web admin 【发布时间】:2016-02-17 07:10:03 【问题描述】:我已经安装了 Glassfish 4 并尝试创建一些 JMS 资源来学习 JMS 的教程,但这是不可能的。在 Web 界面上,它总是出现文本“java.lang.RuntimeException”,在日志控制台上它显示堆栈跟踪。总是抛出此异常我在“JMS 目标资源”页面或连接工厂页面上推送链接“新建...”。这是堆栈跟踪:
[#|2015-11-16T09:15:24.090+0100|INFO|glassfish 4.1|org.glassfish.admingui|_ThreadID=48;_ThreadName=admin-listener(5);_TimeMillis=1447661724090;_LevelValue=800;|
Exception Occurred :null|#]
[#|2015-11-16T09:15:24.097+0100|INFO|glassfish 4.1|org.glassfish.admingui|_ThreadID=48;_ThreadName=admin-listener(5);_TimeMillis=1447661724097;_LevelValue=800;|
Exception Occurred :null|#]
[#|2015-11-16T09:15:24.100+0100|SEVERE|glassfish 4.1|javax.enterprise.resource.webcontainer.jsf.context|_ThreadID=48;_ThreadName=admin-listener(5);_TimeMillis=1447661724100;_LevelValue=1000;|
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException while attempting to process a 'beforeCreate' event for 'event166'.
at com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:422)
at com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:394)
at com.sun.jsftemplating.layout.descriptors.LayoutComponent.beforeCreate(LayoutComponent.java:348)
at com.sun.jsftemplating.layout.descriptors.LayoutComponent.getChild(LayoutComponent.java:288)
at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:556)
at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:551)
at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:507)
at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:507)
at com.sun.jsftemplating.layout.LayoutViewHandler.createView(LayoutViewHandler.java:255)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:256)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:123)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:233)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.doChainInvoke(StandardPipeline.java:678)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
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:206)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
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:283)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
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:591)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor156.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.sun.jsftemplating.layout.descriptors.handler.Handler.invoke(Handler.java:442)
at com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:420)
... 46 more
Caused by: java.lang.NullPointerException
at com.sun.jsftemplating.handlers.UtilHandlers.mapPut(UtilHandlers.java:314)
... 51 more
|#]
我不明白为什么这个烦人的错误的解决方案没有在 Internet 上注册。 有人可以帮我吗?
【问题讨论】:
解决方案可能是 Payara。 Glassfish 是一个不受支持的开源参考实现,Payara 虽然仍然免费且开源,但实际上定期将补丁应用到服务器软件。在我看来,没有什么理由再安装 Glassfish 本身了。 payara.co.uk/home. 【参考方案1】:我在 JDBC 资源方面遇到了同样的问题
解决方法
我能够使用asadmin console
和命令add-resources
添加资源
您可以在此处查看使用 xml 文件的文档:https://docs.oracle.com/cd/E19776-01/820-4497/6nfv6jlim/index.html
我还尝试了 Glassfish 4.0(不是 4.1.1)并且在 Web-Admin-GUI 上一切正常
解释我的情况
我在带有 Java 版本“1.8.0_40”(Java 8u66) 的 Darwin 内核版本 14.4.0 上使用 Glassfish 4.1.1(构建 1)
我尝试在 admin-gui 中添加新的 JDBC 资源: --> 左侧菜单 --> 服务器 --> 资源 --> 组合框 'new' JDBC 资源
事实上,这个组合框的所有选项都会出现错误。同样的问题也出现在: --> 左侧菜单 --> 资源 --> JDBC --> JDBC 资源(或 JDBC 连接池)
Web GUI 显示“class java.lang.RuntimeException”并且日志文件显示:
[2015-11-18T09:34:46.529-0200] [glassfish 4.1] [SEVERE] [] [javax.enterprise.resource.webcontainer.jsf.context]
[tid: _ThreadID=52 _ThreadName=admin-listener(3)] [timeMillis: 1447846486529] [levelValue: 1000 [[java.lang.RuntimeException:
java.lang.reflect.InvocationTargetException while attempting to process a 'beforeCreate' event for 'event157'.
at com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:422)
at com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:394)
at com.sun.jsftemplating.layout.descriptors.LayoutComponent.beforeCreate(LayoutComponent.java:348)
.... [snip]
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
.... [snip]
Caused by: java.lang.NullPointerException
at com.sun.jsftemplating.handlers.UtilHandlers.mapPut(UtilHandlers.java:314)
.... [snip]
【讨论】:
@VictorStafusa 这个问题是reported in github.com,显然已在 5.0 中修复。现在 Glassfish 可以通过git
获得并使用 Maven,应该可以构建一个开发版本并尝试它,即使这个错误表现出糟糕的软件质量并破坏了对 Java EE 参考实现的信任,关于这个问题的 cmets 代表自己。【参考方案2】:
我在创建 JMS 资源 CF 和连接队列/主题时遇到了类似的错误。但是下面的命令在命令 asadmin>
对我有用asadmin> create-jms-resource --host localhost --port 4848 --restype javax.jms.TopicConnectionFactory --property Name=MyID jms/DurableTopicConnectionFactory
命令 create-jms-resource 执行成功。
asadmin> create-jms-resource --host localhost --port 4848 --restype javax.jms.QueueConnectionFactory --property Name=MyQCF jms/QCF1
命令 create-jms-resource 执行成功。
asadmin> create-jms-resource --host localhost --port 4848 --restype javax.jms.Topic --property Name=PhysicalTopic jms/MyTopic
不推荐使用的语法,改为使用:asadmin --host localhost --port 4848 create-jms-resource [options] ..
已创建管理对象 jms/MyTopic。
命令 create-jms-resource 执行成功。
asadmin> create-jms-resource --host localhost --port 4848 --restype javax.jms.Queue --property Name=PhysicalQueue jms/MyQueue
已创建管理对象 jms/MyQueue。
注意:您可以放心地忽略已弃用消息。只需刷新管理页面资源并单击“新建”即可看到新资源。
希望这会有所帮助。
【讨论】:
【参考方案3】:这个问题似乎在 Glassfish 4.1.2 中得到了解决,可以使用 Web 管理界面创建新的 JMS 资源。
【讨论】:
遗憾的是,他们仍然在 netbeans 官方下载页面上提供 4.1.1 :( 如果他们向全世界发布了一个损坏的应用程序,这是什么软件?【参考方案4】:只需添加Porkssaid 的内容,如果您特别想创建 JMS 资源,可以使用 asadmin 中的 create-jms-resource 命令来实现。
create-jms-resource --restype javax.jms.Queue --property Name=myQueue jms/MyQueue
对于那些不确定如何获得 asadmin 的人来说,here 有一个很好的答案。
来源:https://docs.oracle.com/cd/E19879-01/820-4332/create-jms-resource-1/index.html
【讨论】:
以上是关于无法通过 Glassfish 4.1 Web 管理员创建任何 JMS 资源的主要内容,如果未能解决你的问题,请参考以下文章
Glassfish 4.1 + Hibernate 5.2 连接
在 Glassfish 4.1 中部署 ADF application1.2.2.1.4.0
没有'javax.websocket.server.ServerContainer' ServletContext 属性 - Glassfish 4.1