EJB Timer Service不可用,上下文取消部署失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EJB Timer Service不可用,上下文取消部署失败相关的知识,希望对你有一定的参考价值。
我有以下代码:
package ejbs;
import javax.annotation.Resource;
import javax.ejb.Singleton;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerConfig;
import javax.ejb.TimerService;
@Singleton
public class timerbackup {
@Resource
private TimerService timerservice;
@Timeout
public void methodTimeout(Timer timer)
{
System.out.println("timeout");
}
public void settimer(long in)
{
Timer timer=timerservice.createSingleActionTimer(in,new TimerConfig());
}
}
部署应用程序后出现错误消息“EJB计时器服务不可用”。
为了解决这个问题,我遵循以下步骤:
- 访问glassfish管理控制台(qazxsw poi)
- 转到Configurations-> server-config-> EJB Container
- 选择标签EJB Timer Service
- 然后用你的JDBC资源填充Timer Datasource:我使用“jdbc / projecto_final”
- 重启服务器
正如http://localhost:4848所建议的那样。
这导致但在一段时间后TimerService停止工作。部署应用程序后出现以下错误消息:
Set/configure the EJB Timer Service’s DataSource
Severe: Exception while loading the app
Severe: Undeployment failed for context /ProjetoEE1
Info: /file:/E:/formacaoJAVA/2moduloJEE/pratica/projecto_final /projfinal2/ProjetoEE1/build/web/WEB-INF/classes/_DEFAULT_PU logout successful
Warning: EJB Timer Service is not available. Timers for application with id 96332697224871936 will not be deleted
也提到了这个问题,并提出了Set/configure the EJB Timer Service’s DataSource的解决方案。
Glassfish DeploymentException: Error in linking security policy for中提供的解决方案主要包括删除一些文件。更多投票的答案基本上表明以下内容:
- 停止了Glassfish服务器
- 删除了glassfishhome / glassfish / domains / yourdomainname / generated中的所有内容
- 开始Glassfish
我安装了“GlassFish Server 4.1.1”,但这不起作用。
更多投票的第二个答案表明基本上如下:
1.修复此问题所需的全部是删除$ GLASSFISH_HOME / glassfish / domains // osgi-cache下的整个OSGi缓存
这也行不通。
我可以做什么?任何帮助将非常感激
最好的祝福,
拉斐尔·科斯塔
更换
Glassfish DeploymentException: Error in linking security policy for
同
import javax.ejb.Singleton;
它对我有用。我正在使用Derby数据库是你的情况吗?
我已经解决了“同样”的问题
- 完全删除glassfish / domains / domain-name / generated文件夹
- 再次建立申请
- 重启glassfish应用程序
在我的情况下,我在使用GIT进行拉/推操作后安装了我的应用程序的新版本,并且我的应用程序已停止工作。所以我知道在这个新版本之前,我的应用程序运行良好,而且Glassfish上没有任何改变。
我在另一个网站import javax.inject.Singleton;
上找到了一些解释
Glassfish应用程序服务器使用其嵌入式JAVADB来持久保存其可用EJB计时器的状态。未正确设置计时器服务的数据资源可防止EJB计时器被还原并最终无法正常运行。在这种情况下,通常会返回“EJB计时器服务不可用”错误消息。此问题会阻止启动或部署使用EJB计时器服务的任何应用程序。
有两种程序可以克服这种阻塞情况:
第一种解决方案是转到JDBC连接池,并通过ping它来仔细检查Timerpool连接池的运行状况。如果ping失败,则需要检查或重新定义连接池。
如果ping连接池成功,则问题可能是EJB计时器标记文件的存在。只要在EJB计时器服务启动或恢复期间出现问题,就会创建标记文件。
删除标记将解决问题。位于as-install-parent / glassfish / domains / domain-name / generated / ejb /下的标记文件“ejb-timer-service-app”。别忘了重启Glassfish!
我解决了这个问题。如果我记得,我创建了一个新的JDBC资源和一个新的JDBC连接池。
以下链接说明了如何创建JDBC资源和JDBC连接池。 https://dzone.com/articles/solving-ejb-timer-service-not-available-error-in-g-1
可以使用管理控制台或asadmin实用程序创建JDBC资源和JDBC连接池。
以下链接说明了如何使用asadmin utility.General Steps for Creating a JDBC Resource(我使用此实用程序,因为在管理控制台中,当我尝试创建JDBC资源并且JDBC连接池出现错误时)
在管理控制台中,在创建的JDBC资源中,“池名称”字段应等于创建的JDBC连接池的名称。
之后我按照以下步骤操作:
- 配置 - > server-config-> EJB容器
- 选择标签EJB Timer Service
- 使用JDBC资源的名称填充字段Timer Datasource。
- 重启服务器
有任何问题请随意。
最好的问候Rafael Santos Costa
你好我遇到同样的问题,如果你有glassfish 4.1.1服务器可能有一个不稳定的计时器。解决方案:将glassfish 4.1更新为glassfish 5并在此新服务器中部署Web应用程序
以上是关于EJB Timer Service不可用,上下文取消部署失败的主要内容,如果未能解决你的问题,请参考以下文章