Finder From Hell

3 respostas
cv1

Galera, tou com um probleminha aqui convertendo um sistema feito em EJBs pra algo que preste. A nhaca eh que o negocio nem deploya! :(

Tenho um findRecent(Long id) como finder adicional no CMP Negocios. Esse bean tem relacionamento pra tudo quanto eh lado, mas eu nem quero entrar mto nesse detalhe. O caso eh que, apesar de eu ter conferido os deployment descriptors pela enésima vez, o JBoss (como se a vida ja nao fosse miseravel, eu tou usando JBoss! :x) ainda teima em lancar essa excecao:

13:18:49,068 ERROR [EntityContainer] Starting failed

org.jboss.deployment.DeploymentException: Query method not found: findRecent(java.lang.Long)
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaDataFactory.getQueryMethods(JDBCQueryMetaDataFactory.java:282)
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaDataFactory.getQueryMethods(JDBCQueryMetaDataFactory.java:229)
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaDataFactory.createJDBCQueryMetaData(JDBCQueryMetaDataFactory.java:40)
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCEntityMetaData.<init>(JDBCEntityMetaData.java:366)
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCApplicationMetaData.<init>(JDBCApplicationMetaData.java:139)
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCXmlFileLoader.load(JDBCXmlFileLoader.java:52)
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadJDBCEntityMetaData(JDBCStoreManager.java:706)
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.initStoreManager(JDBCStoreManager.java:409)
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:357)
org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:152)
org.jboss.ejb.EntityContainer.startService(EntityContainer.java:342)
org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:192)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
(...)
org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:191)

Alguma vaga ideia de onde mais olhar?

3 Respostas

H

Olá cv, vc poderia colocar para que pudessemos ver seu ejb-jar.xml , vc esta usando xdoclet? como esta sua interface home?
[]’

Luca

Olá

Vaga idéia? Veja:

e
http://www.thecortex.net/clover/eg/jboss/report/org/jboss/ejb/plugins/cmp/jdbc/metadata/JDBCQueryMetaDataFactory.html

Outra idéia mais vaga ainda?
Manda o cara que escreveu a instrução 281 deste método esquecer tudo que aprendeu de Perl. Veja que pérola de código:

275    private Method getQueryMethod(
276                String queryName,
277                Class[] parameters,
278                Class clazz) {
279       
280                try {
281                Method method  = clazz.getMethod(queryName, parameters);
282       
283                // is the method abstract?
284                // (remember interface methods are always abstract)
285                if(Modifier.isAbstract(method.getModifiers())) {
286                   return method;
287                }
288             } catch(NoSuchMethodException e) {
289                // that's cool
290             }
291             return null;
292          }

Este clazz com “z” parece pegadinha.

PS: Este código não deve ser o que deu seu erro pois 282 está em branco!

Outra idéia?

Do fórum do JBoss http://www.jboss.org/index.html?module=bb&op=viewtopic&t=21877

Um cara disse: “This means you did not declare your query in the ejb-jar.xml file.”

O outro disse:

Posted: Fri Sep 27, 2002 09:46 AM    Post subject: Re: nested throwable: (org.jboss.deployment.DeploymentExcep   

--------------------------------------------------------------------------------
 
In my experience this can mean two things : 
1. The method name is not exactly between the method-name tags, f.i.surrounding tabs, space.... 
2. The parameter spec in XML doesn't correspond with the parameter used in the interface.

[]s
Luca

cv1

QUE OOOOOODIOOOOO!! :evil: :evil: :evil:

Era o JBuilder, que esqueceu o que significa “Rebuild” e “Redeploy”… ele estava tentando fazer um deploy do arquivo com a versao errada da Home, usando a versao nova do ejb-jar.xml. Claro que ia dar erro ne? :smiley:

Fica o aviso: faca rebuilds “na unha” se vc tiver a infelicidade de ser forcado a usar JBuilder pra trabalhar com J2EE (o que seria o equivalente a forçar seu dentista a trabalhar com um serrote… eh simplesmente a ferramenta mais impropria para a tarefa que existe - ou nao? :D)

Criado 28 de janeiro de 2004
Ultima resposta 28 de jan. de 2004
Respostas 3
Participantes 3