2009-07-22 4 views
1

Ich konnte JOTM nicht von Jetty innerhalb einer Maven Build-Umgebung konfigurieren. Die Ausnahme, die ich erhalte, wenn ich versuche, meine Anwendung auszuführen ist folgende: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 

ich dies als Referenz bin mit: http://docs.codehaus.org/display/JETTY/JOTM

jetty.xml (jettyConfig in pom.xml des Maven, das ist eigentlich

<?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 gesehen), die (nicht so sicher, dass dies gesehen wird, sondern von der Ausnahme, das ist auch relevant?)

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 

Irgendwelche Ideen?

Danke, Walter

Antwort

0

Wo ist carol.properties in Ihrem Projekt liegt

Maven Ressourcen müssen unter src/main/resources sein. Jetty erwartet, dass sich carol.properties im Ressourcenordner befindet.

Sie müssen also möglicherweise carol.properties nach src/main/resources/resources verschieben, damit die Datei vor dem Start von Jetty durch die Prozessressourcestufe in Ziel/Ressourcen kopiert wird.

+0

Hmm nicht beeinflusst - ok, werde ich das später versuchen. Hoffentlich ist das alles was ich brauche? Der Fehler klingt mehr wie ein Konfigurationsproblem für mich (Syntax), aber ich werde das später versuchen. –

+0

Ich habe das versucht, aber ich bekomme die gleiche Nachricht. Hier befindet sich die carol.properties, wenn der Krieg aufgebaut wird: /WEB-INF/classes/resources/carol.properties –

0

Es scheint, dass Carol verwendet eigene carol.jar/carol.properties Datei anstelle von deins. Ich bereitete ein Beispielprojekt mit JTA in Anlegesteg 8 mit geänderter Datei carol.jar/carol.properties vor. da ist es http://github.com/beolnix/jta-in-jetty8. Scheint alles in Ordnung zu sein (Commit, Rollback - kein Problem), aber manchmal erscheint die Ausnahme org.omg.CORBA.BAD_INV_ORDER. In meinem Beispiel diese Ausnahme

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()) 
} 

ignoriert wird, weil es nicht das Ergebnis der Transaktionsverarbeitung

Verwandte Themen