Tomcat bekommt keine Schreibrechte für webapps

andyx1975

Aktives Mitglied
Hallo,

ich habe ein Problem mit dem Tomcat 7 auf ubuntu 12.04 LTS... ich habe im webapps Ordner einen Order Namens "bookingAdmin", indem sich meine App befindet. Die App verwendet EclipseLink as Persistence API. Beim tomcat start, versucht EclipseLink eine Datei mit dem Namen "createDDL.jdbc" zu schreiben. Ich bekomme jedoch immer ein "Permission denied" und die Applikation startet dadurch nicht mehr. Die File Berechtigungen sind meiner Meinung nach ok.

Java:
Internal Exception: java.io.FileNotFoundException: ./createDDL.jdbc (Permission denied)
	at org.eclipse.persistence.exceptions.ValidationException.fileError(ValidationException.java:946)
	at org.eclipse.persistence.tools.schemaframework.SchemaManager.outputCreateDDLToFile(SchemaManager.java:835)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.writeDDLsToFiles(EntityManagerFactoryProvider.java:373)
	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.generateDDL(EntityManagerSetupImpl.java:2794)
	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:477)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
	at com.uds.webadmin.server.CServletFillBaseTables.contextInitialized(CServletFillBaseTables.java:61)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)
Caused by: java.io.FileNotFoundException: ./createDDL.jdbc (Permission denied)
	at java.io.FileOutputStream.open(Native Method)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:110)
	at java.io.FileWriter.<init>(FileWriter.java:63)
	at org.eclipse.persistence.tools.schemaframework.SchemaManager.outputCreateDDLToFile(SchemaManager.java:833)
	... 21 more

Die Berechtigungen sind wie folgt gesetzt:
Java:
-rw-rw-r-- 1 tomcat tomcat 38535 Oct 22 15:51 createDDL.jdbc
-rw-rw-r-- 1 tomcat tomcat  3060 Oct 22 15:51 DataBaseScripts.txt
-rw-rw-r-- 1 tomcat tomcat 11415 Oct 22 15:51 dropDDL.jdbc

Selbst wenn Ich Vollzugriff mit "sudo chmod -R 777 /var/lib/tomcat/webapps;" gebe, bekomme ich den Fehler!!! Jemand eine Idee was das sein kann?

Danke und Gruß
Andy
 
Bist du sicher mit dieser Angabe?
Code:
./createDDL.jdbc
Ich vermute das müsstest du ändern.
 
Hallo,

die Angabe setze leider nicht ich... das kommt automatisch von EclipseLink... auf meinem letzten Ubuntu Server hatte ich die Probleme nicht. Die Application ist ohne Probleme gelaufen.
 
Halll,

also du hast recht... wenn ich der Schreiben der Datei in der persistance.xml abschalte... dann läuft es:

<property name="eclipselink.ddl-generation" value="none"/>

Gruß
Andy
 
Schön.

Ich bin eh der Meinung, das zum Start einer Webanwendung nicht die DDL-Skripte erzeugt werden müssen. Dieses macht man eigentlich vorher und deployed eine Datenbank mit dem richtigen Schema.
 
Hey danke... also mit dieser Einstellung funktioniert es:

<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>

Ja im endefekt hast du recht... aber es handelt sich um ein System, das immer noch in der Entwiklung ist. Es kommen immer wieder neue Tabellen hinzu... von daher ist das einfacher.

Gruß
Andy
 

Zurück
Oben