2009-07-22 6 views
1

J'ai été incapable de configurer JOTM sur Jetty à l'intérieur d'un environnement de construction Maven. L'exception que je reçois quand je tente d'exécuter ma demande est la suivante:Maven, Jetty, JOTM

2009-07-21 19:47:23.499::WARN: Config error at <New id="UserTransaction" class="org.mortbay.jetty.plus.naming.Transaction"><Arg> 
       <Ref id="ut"/> 
      </Arg></New> 
    [INFO] Jetty server exiting. 
    [INFO] ------------------------------------------------------------------------ 
    [ERROR] BUILD ERROR 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] Failure 

    A flat name can only have a single component 

J'utilise comme référence: http://docs.codehaus.org/display/JETTY/JOTM

jetty.xml (jettyConfig dans pom.xml Maven, c'est en fait être vu)

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 
<Configure id="Server" class="org.mortbay.jetty.Server"> 
<!-- Configure a Jotm instance which provides a javax.transaction.TransactionManager  --> 
    <!-- and a javax.transaction.UserTransaction implementation.        --> 
    <New id="jotm" class="org.objectweb.jotm.Jotm"> 
     <Arg type="boolean">True</Arg> 
     <Arg type="boolean">False</Arg> 
     <Call id="tm" name="getTransactionManager"/> 
     <Call id="ut" name="getUserTransaction"/> 
    </New> 

    <!-- Set up the UserTransaction impl from JOTM as the transaction manager for jetty  --> 
    <!-- 
    <New id="UserTransaction" class="org.mortbay.jetty.plus.naming.Transaction"> 
     <Arg> 
      <Ref id="ut"/> 
     </Arg> 
    </New> 
    --> 
    <New id="userTransaction" class="org.mortbay.jetty.plus.naming.Resource"> 
     <Arg></Arg> 
     <Arg>javax.transaction.TransactionManager</Arg> 
     <Arg> 
      <Ref id="ut"/> 
     </Arg> 
    </New> 


    <New id="tx" class="org.mortbay.jetty.plus.naming.Transaction"> 
     <Arg> 
      <Ref id="ut"/> 
     </Arg> 
    </New> 

    <!-- If you want to be able to set up more references in webapp specific files --> 
    <!-- such as context deployment files and WEB-INF/jetty-env.xml files, you  --> 
    <!-- need to save a reference to the JOTM tm object:       --> 
    <!-- 
    <Call name="setAttribute"> 
    <Arg>tm</Arg> 
    <Arg><Ref id="tm"/></Arg> 
    </Call> 
    --> 
</Configure> 

carol.properties (pas si sûr cela est vu, mais de l'exception, est-ce encore pertinent?)

carol.start.ns=false 
carol.start.jndi=false 
carol.protocols=jrmp 
carol.start.rmi=false 
carol.jvm.rmi.local.call=true 
carol.jndi.java.naming.factory.url.pkgs=org.mortbay.naming 

Des idées?

Merci, Walter

Répondre

0

Où est carol.properties situé dans votre projet?

Les ressources Maven doivent être sous src/main/resources. Jetty s'attend à ce que carol.properties soit dans le dossier des ressources. Par conséquent, vous devrez peut-être déplacer carol.properties vers src/main/resources/resources pour que le fichier soit copié vers cible/ressources par l'étape de ressources de processus avant le lancement de Jetty.

+0

Hmm - ok, je vais essayer plus tard. J'espère que c'est tout ce dont j'ai besoin? L'erreur ressemble plus à un problème de configuration (syntaxe), mais je vais essayer plus tard. –

+0

J'ai essayé, mais je reçois le même message. Voici où se trouve carol.properties lors de la construction de la guerre: /WEB-INF/classes/resources/carol.properties –

0

Il semble que carol utilise son propre fichier carol.jar/carol.properties au lieu du vôtre. J'ai préparé un exemple de projet avec jta dans jetty 8 avec le fichier carol.jar/carol.properties modifié. il est http://github.com/beolnix/jta-in-jetty8. Il semble que tout est OK, (commit, rollback - pas de problème) mais parfois l'exception org.omg.CORBA.BAD_INV_ORDER apparaît. Dans mon exemple, cette exception est ignorée

try { 
    ret = ctx.proceed() 
    tx.commit() 
} catch (org.omg.CORBA.BAD_INV_ORDER e) { 
    //nop 
} catch (Throwable e) { 
    tx.rollback() 
    throw new TransactionException(e.getMessage()) 
} 

parce qu'elle n'a pas d'influence le résultat du traitement des transactions

Questions connexes