gpt4 book ai didi

java - GlassFish 重新启动 - 现在收到异常,将上下文初始化事件发送到类的监听器实例

转载 作者:太空宇宙 更新时间:2023-11-04 08:20:45 26 4
gpt4 key购买 nike

我是新职位,正在学习 Java,因为我负责的 2 个应用程序是用 Java 编写的。但对我来说不幸的是,当我们的网络人员在 Linux 机器上进行 apache 升级时,它导致我们的网站和 GlassFish 中断。此后,他们已将 Apache 恢复到我们升级之前运行的版本,同时他们还必须获取 SSL 的新 key 。

我的环境:物理 Linux Suse Enterprise 服务器,配备 Apache 2.2.10 和 GlassFish Enterprise Server v.2.1.1,运行一个 Web 应用程序和一个企业应用程序。

到目前为止我已采取的步骤:

  1. 将新的 SSL 导入 keystore 。
  2. 更新了domain.xml以反射(reflect)别名和 keystore 文件中的更改
  3. 重新启动 Derby 数据库(又名 JavaDB): asadmin start-database --dbhost 0.0.0.0 --dbport 1527
  4. 重新启动 GlassFish 域: asadmin 起始域domain1

由于几个严重错误,应用程序无法运行,其中一个与 MySQL 的 JDBC 连接有关。所以我登录到管理控制台并对所有连接池执行 ping 操作。 MySQL 没有连接,所以我在“附加属性”下发现了两件事:serverName 的 IP 地址有一个额外的数字,所以我删除了它。并且该 url 缺少 IP 地址 jdbc:mysql://3306/dbname,因此我将其更改为 jdbc:mysql://127.0.0.1:3306/dbname。我再次 ping,这解决了连接问题。

所以我停止并再次启动域,但仍然没有任何结果。至少我只犯了两个严重错误。我已从下面的服务器日志中复制了主要错误消息。另一条消息只是指出应用程序由于之前的错误而无法启动。由于我一直担任此职务,因此在这次中断之前,GlassFish 服务器上运行的任何应用程序均未进行任何更改,管理控制台中也未进行任何更改。

到目前为止,解决问题对我来说并不是一件容易的事。到目前为止,我已经做了很多谷歌搜索并找到了很多帮助,但我对以下问题没有太多运气。似乎我不需要更改实际应用程序上的任何内容,因为它们在此之前就已经工作了。有任何想法吗?感谢您抽出时间!

[#|2012-03-02T10:36:22.209-0600|SEVERE|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=12;_ThreadName=pool-1-thread-3;_RequestID=317b1d80-3858-4841-bc6a-8e18e9331da8;|WebModule[/Applications]PWC1275: Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener
java.lang.RuntimeException: Could not create Component: org.jboss.seam.core.init
at org.jboss.seam.init.Initialization.addComponent(Initialization.java:989)
at org.jboss.seam.init.Initialization.init(Initialization.java:576)
at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:34)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4655)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5364)
at com.sun.enterprise.web.WebModule.start(WebModule.java:345)
at com.sun.enterprise.web.LifecycleStarter.doRun(LifecycleStarter.java:58)
at com.sun.appserv.management.util.misc.RunnableBase.runSync(RunnableBase.java:304)
at com.sun.appserv.management.util.misc.RunnableBase._submit(RunnableBase.java:176)
at com.sun.appserv.management.util.misc.RunnableBase.submit(RunnableBase.java:192)
at com.sun.enterprise.web.VirtualServer.startChildren(VirtualServer.java:1762)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1244)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:971)
at com.sun.enterprise.web.LifecycleStarter.doRun(LifecycleStarter.java:58)
at com.sun.appserv.management.util.misc.RunnableBase.runSync(RunnableBase.java:304)
at com.sun.appserv.management.util.misc.RunnableBase.run(RunnableBase.java:341)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.security.AccessControlException: access denied (java.lang.reflect.ReflectPermission suppressAccessChecks)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:107)
at org.jboss.seam.Component.scanMethod(Component.java:788)
at org.jboss.seam.Component.initMembers(Component.java:532)
at org.jboss.seam.Component.<init>(Component.java:254)
at org.jboss.seam.Component.<init>(Component.java:217)
at org.jboss.seam.init.Initialization.addComponent(Initialization.java:974)
... 21 more
|#]

最佳答案

我能够找到我收到的严重错误的解决方案。对我来说,关键是消息中的一行:Caused by: java.security.AccessControlException: access returned (java.lang.reflect.ReflectPermission subsupAccessChecks)

我在 Google 上搜索了这些文字,偶然发现了 Felipe Gaucho 撰写的 Java.net 博客文章 http://weblogs.java.net/blog/felipegaucho/archive/2010/01/02/glassfish-securitymanagercheckpermission :

After configuring Hudson to run in a Glassfish with security manager enabled I started to have problems in other applications, specially web applications using reflection to access private fields in Java classes. Over the web I noticed a lot of people struggling with the same issue (Seam, GWT, Vaadin, etc). The problem is caused because most of the modern frameworks tries to access Java private fields directly - perhaps motivated by the popularity of type-unsafe languages or just designed for better performance. The frameworks designer expect to have this freedom but the Security Manager imposes strict rules against that. Applications based on these frameworks running on a secure Glassfish will eventually throw an exception.

他接着提出了两种不同的解决方法,第 2 种方法对我有用。通过在安全策略文件中添加以下代码来抑制 GlassFish 安全策略中的访问检查:

usr/local/glassfish/domains/domain1/config/server.policy

grant codeBase "file:${com.sun.aas.installRoot}/domains/domain1/applications/your_app_name/-" {
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};

关于java - GlassFish 重新启动 - 现在收到异常,将上下文初始化事件发送到类的监听器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9587924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com