JBoss: Problem starting service

Pessoas, gostaria de um caminho para descobrir o que está faltando…

quando peço para subir o JBoss recebo a exception:

17:29:15,652 WARN [ServiceController] Problem starting service jboss.j2ee:ear=termo.ear,jar=termo-ejb.jar,name=TermoDAOBean,service=EJB3 java.lang.NullPointerException at org.jboss.ejb.txtimer.DatabasePersistencePolicy.listTimerHandles(DatabasePersistencePolicy.java:165) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) at $Proxy30.listTimerHandles(Unknown Source) at org.jboss.ejb.txtimer.EJBTimerServiceImpl.restoreTimers(EJBTimerServiceImpl.java:408) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

que passos devo seguir para encontrar o problema?

Eu sugiro o seguinte,

  1. Comente o seu TermoDAOBean, que é um EJB 3.0
  2. Se o JBoss partir sem problemas, um erro nesse bean está confirmado
  3. Faça um post de seu persistence.xml e do seu EJB aqui para que possamos ajudá-lo melhor

Abraço

Olhando melhor o log, vi que na verdade o problema começa aki:

10:25:35,063 INFO  [NamingHelper] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
10:25:35,259 INFO  [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
10:25:35,265 INFO  [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=termo.ear,jar=termo-ejb.jar,name=RegraRelacionamentoDAOBean,service=EJB3 with dependencies:
10:25:35,265 INFO  [JmxKernelAbstraction] 	persistence.units:ear=termo.ear,jar=termo-ejb.jar,unitName=termo
10:25:35,454 INFO  [EJBContainer] STARTED EJB: br.com.coc.academico.conteudo.core.dao.ejb3.RegraRelacionamentoDAOBean ejbName: RegraRelacionamentoDAOBean
10:25:35,522 INFO  [EJBContainer] STOPPED EJB: br.com.coc.academico.conteudo.core.dao.ejb3.RegraRelacionamentoDAOBean ejbName: RegraRelacionamentoDAOBean
10:25:35,527 WARN  [ServiceController] Problem starting service jboss.j2ee:ear=termo.ear,jar=termo-ejb.jar,name=RegraRelacionamentoDAOBean,service=EJB3
java.lang.NullPointerException
	at org.jboss.ejb.txtimer.DatabasePersistencePolicy.listTimerHandles(DatabasePersistencePolicy.java:165)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	...

parece que não consegue injetar o EJB?!?

@Stateless
public class RegraRelacionamentoDAOBean extends
		GenericEJB3DAO<RegraRelacionamento, Integer> implements
		RegraRelacionamentoDAO {

	@Override
	public List<RegraRelacionamento> getList() {
		return super.getList();
	}

	@Override
	public RegraRelacionamento getById(Integer id) {
		return super.getById(id, false);
	}

	@Override
	public RegraRelacionamento delete(RegraRelacionamento regraRelacionamento) {
		return super.delete(regraRelacionamento);
	}

	@Override
	public RegraRelacionamento add(RegraRelacionamento regraRelacionamento) {
		return super.add(regraRelacionamento);
	}

	@Override
	public List<RegraRelacionamento> search(
			RegraRelacionamento regraRelacionamento, String... exclusions) {
		return super.search(regraRelacionamento, exclusions);
	}

	@Override
	public RegraRelacionamento edit(RegraRelacionamento regraRelacionamento) {
		return super.edit(regraRelacionamento);
	}

}
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
	xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
	<persistence-unit name="termo">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:/HSQLDBDS</jta-data-source>
		<properties>
			<property name="hibernate.dialect"
				value="org.hibernate.dialect.HSQLDialect" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
			<property name="hibernate.hbm2ddl.auto" value="create" />
		</properties>
	</persistence-unit>
</persistence>

Coloque no seu arquivo -ds.xml o conteudo:

<?xml version="1.0" encoding="UTF-8"?>
  <!-- The jndi name of the DataSource, it is prefixed with java:/ -->
  <!-- Datasources are not available outside the virtual machine -->
  <jndi-name>DefaultDS</jndi-name>

  <!-- For server mode db, allowing other processes to use hsqldb over tcp.
  This requires the org.jboss.jdbc.HypersonicDatabase mbean.
  <connection-url>jdbc:hsqldb:hsql://${jboss.bind.address}:1701</connection-url>
  -->
  <!-- For totally in-memory db, not saved when jboss stops. 
  The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown
  <connection-url>jdbc:hsqldb:.</connection-url>
  -->
  <!-- For in-process persistent db, saved when jboss stops.
  The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown
  -->
  <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}localDB</connection-url>

  <!-- The driver class -->
  <driver-class>org.hsqldb.jdbcDriver</driver-class>

  <!-- The login and password -->
  <user-name>sa</user-name>
  <password></password>

  <!--example of how to specify class that determines if exception means connection should be destroyed-->
  <!--exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyExceptionSorter</exception-sorter-class-name-->

  <!-- this will be run before a managed connection is removed from the pool for use by a client-->
  <!--<check-valid-connection-sql>select * from something</check-valid-connection-sql> -->

  <!-- The minimum connections in a pool/sub-pool. Pools are lazily constructed on first use -->
  <min-pool-size>5</min-pool-size>

  <!-- The maximum connections in a pool/sub-pool -->
  <max-pool-size>20</max-pool-size>

  <!-- The time before an unused connection is destroyed -->
  <!-- NOTE: This is the check period. It will be destroyed somewhere between 1x and 2x this timeout after last use -->
  <!-- TEMPORARY FIX! - Disable idle connection removal, HSQLDB has a problem with not reaping threads on closed connections -->
  <idle-timeout-minutes>0</idle-timeout-minutes>

  <!-- sql to call when connection is created
    <new-connection-sql>some arbitrary sql</new-connection-sql>
  -->

  <!-- sql to call on an existing pooled connection when it is obtained from pool 
     <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
  -->

  <!-- example of how to specify a class that determines a connection is valid before it is handed out from the pool
     <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyValidConnectionChecker</valid-connection-checker-class-name>
  -->

  <!-- Whether to check all statements are closed when the connection is returned to the pool,
       this is a debugging feature that should be turned off in production -->
  <track-statements/>

  <!-- Use the getConnection(user, pw) for logins
    <application-managed-security/>
  -->

  <!-- Use the security domain defined in conf/login-config.xml -->
  <security-domain>HsqlDbRealm</security-domain>

  <!-- Use the security domain defined in conf/login-config.xml or the
       getConnection(user, pw) for logins. The security domain takes precedence.
    <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
  -->

  <!-- HSQL DB benefits from prepared statement caching -->
  <prepared-statement-cache-size>32</prepared-statement-cache-size>

  <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
  <metadata>
     <type-mapping>Hypersonic SQL</type-mapping>
  </metadata>

  <!-- When using in-process (standalone) mode -->
  <depends>jboss:service=Hypersonic,database=localDB</depends>
  <!-- Uncomment when using hsqldb in server mode
  <depends>jboss:service=Hypersonic</depends>
  -->


localDB
true

tive um problema parecido que começou a acontecer sem motivo algum:

[quote]WARN
"Problem starting service jboss:service=Hypersonic,database=localDB"
“java.sql.SQLException: User not found: SA”[/quote]

Resolvi limpando os diretorios do jboss:
jboss/server/default/tmp
jboss/server/default/data
jboss/server/default/work

[quote=romuloff]tive um problema parecido que começou a acontecer sem motivo algum:

[quote]WARN
"Problem starting service jboss:service=Hypersonic,database=localDB"
“java.sql.SQLException: User not found: SA”[/quote]

Resolvi limpando os diretorios do jboss:
jboss/server/default/tmp
jboss/server/default/data
jboss/server/default/work
[/quote]

Cara, tive este mesmo erro, do nada, segui o que disse e também resolveu ! Valeu por postar.

abs