无法让 Glassfish 3.1.2.2 使用 jdbc/__TimerService 以外的任何 EJB 计时器服务

无法让 Glassfish 3.1.2.2 使用 jdbc/__TimerService 以外的任何 EJB 计时器服务

我正在尝试设置一个 Glassfish 集群(1 个 DAS,其集群有一个在 ssh 节点上运行的实例)。

我现在的位置是:

  • DAS 运行
  • 已创建集群

    asadmin create-cluster cluster
    
  • 节点已创建

    asadmin create-node-ssh --nodehost apphost --installdir /opt/glassfish3 node-apphost
    
  • 实例安装并配置

    asadmin create-instance --node node-apphost --cluster cluster cluster-instance-apphost
    

当我尝试启动远程实例时,我在 server.log 中收到这些异常

[#|2013-02-05T12:42:28.603-0500|WARNING|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=10;_ThreadName=Thread-2;|Cannot deploy or load EJBTimerService: 
java.lang.RuntimeException: javax.naming.NamingException: Lookup failed for 'jdbc/__TimerPool' in SerialContext[myEnv={com.sun.enterprise.connectors.jndisuffix=__pm, java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: jdbc]
        at org.glassfish.

实例确实启动了,但我的应用程序部署失败,

Exception while loading the app : EJB Timer Service is not available

我尝试将 configs.config.cluster-config.ejb-container.ejb-timer-service.timer-datasource 配置属性设置为“jdbc/__ default”(擦除节点后,甚至重新创建集群)作为测试,按照 GF 文档 - 尽管此时我很确定不会产生与任何可远程访问的数据库的实际连接,因为我没有设置 - 关键是,无论我做什么,我仍然会看到远程实例试图查找“jdbc/__ TimerService”......

如何让我的远程实例使用其集​​群配置中定义的计时器数据源?

答案1

在 Oracle GlassFish Server 3.1 应用程序开发指南中

http://docs.oracle.com/cd/E18930_01/html/821-2418/beahw.html

你可以看到这一行:

注意 - 不要在集群 GlassFish Server 环境中使用 jdbc/__TimerPool 资源作为计时器。您必须改用自定义 JDBC 资源或 jdbc/__default 资源。请参阅下面的“将 EJB 计时器部署到集群”中的说明。另请参阅 Oracle GlassFish Server 3.1 管理指南中的“在集群环境中启用 jdbc/__default 资源”。

相关内容