Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem

JavaKaffee

Mitglied
Hi.

Ich bin mir nicht ganz sicher, ob's hierhin gehört, aber ich denke das größte Problem besteht hier in der Datenbankanbindung.
Ich setze aktuell ein Monitoring-System auf (Dynamic Web Project), welches über eine Weboberfläche administriert werden soll. Die einzelnen Aufgaben sollen mit Quartz geplant werden (CronJobs). Ich habe ein initialisierendes Servlet, welches aktuell testweise einen Schedule startet und einen Job plant. Der Job alleine funktioniert, beim Scheduling hakt es insofern, als dass der JDBCJobStore streikt. Ich bekomme eine Exception in Richtung "Datenbankverbindung kann nicht hergestellt werden" (hab schon mehrere Varianten bei verschiedenen Ansätzen und Versuchen erhalten, die aber letztlich immer irgendwie mit der DB zusammenhängen. Interessant ist, dass der Schedule trotzdem irgendwie initialisiert wird nur dazwischen irgendwo was schiefgeht. Na ja, hier die Exception, anschließend meine Quartz.properties. Die wichtigsten Dinge aus dem Servlet/dem Schedule häng ich auch mal an ->
Java:
             public void init() throws ServletException {
		// Set up a simple configuration that logs on the console.
		BasicConfigurator.configure();
		// Automatically java script can run here
		log.info("### Servlet Initialized successfully");
		try {
			log.info("### Initializing Scheduler");
	        new AlarmSchedule();
	        log.info("### Scheduler successfully initialized");

	    }
	    catch (Exception ex) {
	    	log.fatal("### Failed to initialize Scheduler");
	    }

	}
   
        public AlarmSchedule(){
		try{
			SchedulerFactory schdFact = new StdSchedulerFactory();
			Scheduler schd = schdFact.getScheduler();
			schd.start();

			JobDetail jd = new JobDetail("alarmjob", Scheduler.DEFAULT_GROUP, AlarmJob.class);
			Trigger t = TriggerUtils.makeImmediateTrigger("alarmtrigger", 5, 10);
			t.getJobDataMap().put("auth_name", "Vageesh");
			t.setStartTime(new Date());
			schd.addJobListener(new AlarmJobListener());
			jd.addJobListener("Alarm gone");
			schd.scheduleJob(jd, t);
			System.out.println(schd.getSchedulerName());
		}
		catch(SchedulerException e){
			e.printStackTrace();
		}
	}
Die Exception (samt bissi Tomcat-Startup-Ausgabe) ->
Code:
INFO: Starting Servlet Engine: Apache Tomcat/6.0.32
0    INFO  [main]            com.cron.InitializeServlet     - ### Servlet Initialized successfully
0 [main] INFO com.cron.InitializeServlet  - ### Servlet Initialized successfully
1    INFO  [main]            com.cron.InitializeServlet     - ### Initializing Scheduler
1 [main] INFO com.cron.InitializeServlet  - ### Initializing Scheduler
156  INFO  [main] org.quartz.core.SchedulerSignalerImpl     - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
156 [main] INFO org.quartz.core.SchedulerSignalerImpl  - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
156  INFO  [main]       org.quartz.core.QuartzScheduler     - Quartz Scheduler v.1.8.5 created.
156 [main] INFO org.quartz.core.QuartzScheduler  - Quartz Scheduler v.1.8.5 created.
158  INFO  [main] org.quartz.impl.jdbcjobstore.JobStoreTX     - Using thread monitor-based data access locking (synchronization).
158 [main] INFO org.quartz.impl.jdbcjobstore.JobStoreTX  - Using thread monitor-based data access locking (synchronization).
161  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' is desired by: main
161 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' is desired by: main
161  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' is being obtained: main
161 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' is being obtained: main
162  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' given to: main
162 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' given to: main
465  INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310643797144 shutting down.
465 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310643797144 shutting down.
465  INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310643797144 paused.
465 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310643797144 paused.
465  INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310643797144 shutdown complete.
465 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310643797144 shutdown complete.
org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'org.apache.derby.jdbc.EmbeddedDriver' for connect URL 'jdbc:derby://127.0.0.1:1527/scheduler' [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'org.apache.derby.jdbc.EmbeddedDriver' for connect URL 'jdbc:derby://127.0.0.1:1527/scheduler']]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:612)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:56)
	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1274)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1465)
	at com.cron.AlarmSchedule.<init>(AlarmSchedule.java:17)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'org.apache.derby.jdbc.EmbeddedDriver' for connect URL 'jdbc:derby://127.0.0.1:1527/scheduler' [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'org.apache.derby.jdbc.EmbeddedDriver' for connect URL 'jdbc:derby://127.0.0.1:1527/scheduler']
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:695)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:69)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3765)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3730)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanVolatileTriggerAndJobs(JobStoreSupport.java:752)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:610)
	... 23 more
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'org.apache.derby.jdbc.EmbeddedDriver' for connect URL 'jdbc:derby://127.0.0.1:1527/scheduler'
	at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.quartz.utils.PoolingConnectionProvider.getConnection(PoolingConnectionProvider.java:194)
	at org.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:109)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:692)
	... 28 more
Caused by: java.sql.SQLException: No suitable driver
	at java.sql.DriverManager.getDriver(DriverManager.java:264)
	at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
	... 33 more
467  INFO  [main]            com.cron.InitializeServlet     - ### Scheduler successfully initialized
467 [main] INFO com.cron.InitializeServlet  - ### Scheduler successfully initialized
14.07.2011 13:43:17 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
14.07.2011 13:43:17 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
14.07.2011 13:43:17 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/17  config=null
14.07.2011 13:43:17 org.apache.catalina.startup.Catalina start
INFO: Server startup in 860 ms
637  DEBUG [MonitoringScheduler_Worker-1]     org.quartz.simpl.SimpleThreadPool     - WorkerThread is shut down.
637 [MonitoringScheduler_Worker-1] DEBUG org.quartz.simpl.SimpleThreadPool  - WorkerThread is shut down.
638  DEBUG [MonitoringScheduler_Worker-3]     org.quartz.simpl.SimpleThreadPool     - WorkerThread is shut down.
638 [MonitoringScheduler_Worker-3] DEBUG org.quartz.simpl.SimpleThreadPool  - WorkerThread is shut down.
639  DEBUG [MonitoringScheduler_Worker-5]     org.quartz.simpl.SimpleThreadPool     - WorkerThread is shut down.
639 [MonitoringScheduler_Worker-5] DEBUG org.quartz.simpl.SimpleThreadPool  - WorkerThread is shut down.
639  DEBUG [MonitoringScheduler_Worker-2]     org.quartz.simpl.SimpleThreadPool     - WorkerThread is shut down.
639 [MonitoringScheduler_Worker-2] DEBUG org.quartz.simpl.SimpleThreadPool  - WorkerThread is shut down.
640  DEBUG [MonitoringScheduler_Worker-4]     org.quartz.simpl.SimpleThreadPool     - WorkerThread is shut down.
640 [MonitoringScheduler_Worker-4] DEBUG org.quartz.simpl.SimpleThreadPool  - WorkerThread is shut down.
Die Quartz.properties ->
Code:
# ==========Configure Main Scheduler Properties ==========
org.quartz.scheduler.instanceName = MonitoringScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.skipUpdateCheck = true
# ============== Configure ThreadPool ===============
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=5
org.quartz.threadPool.threadPriority=5
# =============== Configure JobStore ================
#specify the jobstore used
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false

#The datasource for the jobstore that is to be used
org.quartz.jobStore.dataSource = myDS

#quartz table prefixes in the database
org.quartz.jobStore.tablePrefix = qrtz_
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.isClustered = false

#The details of the datasource specified previously
org.quartz.dataSource.myDS.driver = org.apache.derby.jdbc.EmbeddedDriver
org.quartz.dataSource.myDS.URL = jdbc:derby://127.0.0.1:1527/scheduler
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password = monitor
org.quartz.dataSource.myDS.maxConnections = 20
Der Treiber (derby.jar) liegt auf dem CP vor, daran kann/sollte es eigentlich nicht liegen.
 

Niki

Top Contributor
schon lange her dass ich mit Derby gearbeitet habe, aber solltest du dafür nicht den Network Treiber verwenden wenn du mit dieser URL darauf zugreifst?

'org.apache.derby.jdbc.EmbeddedDriver' for connect URL 'jdbc:derby://127.0.0.1:1527/scheduler'

Stell mal den Treiber auf org.apache.derby.jdbc.ClientDriver um.
 

JavaKaffee

Mitglied
Hat leider keine Besserung ergeben. Hatte ich auch vorher schonmal versucht, diesmal nur mit der Änderung, dass ich die derbyclient.jar nochmal in die Tomcat-lib eingefügt habe zusätzlich.
Code:
INFO: Starting Servlet Engine: Apache Tomcat/6.0.32
0    INFO  [main]            com.cron.InitializeServlet     - ### Servlet Initialized successfully
0 [main] INFO com.cron.InitializeServlet  - ### Servlet Initialized successfully
1    INFO  [main]            com.cron.InitializeServlet     - ### Initializing Scheduler
1 [main] INFO com.cron.InitializeServlet  - ### Initializing Scheduler
169  INFO  [main] org.quartz.core.SchedulerSignalerImpl     - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
169 [main] INFO org.quartz.core.SchedulerSignalerImpl  - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
169  INFO  [main]       org.quartz.core.QuartzScheduler     - Quartz Scheduler v.1.8.5 created.
169 [main] INFO org.quartz.core.QuartzScheduler  - Quartz Scheduler v.1.8.5 created.
172  INFO  [main] org.quartz.impl.jdbcjobstore.JobStoreTX     - Using thread monitor-based data access locking (synchronization).
172 [main] INFO org.quartz.impl.jdbcjobstore.JobStoreTX  - Using thread monitor-based data access locking (synchronization).
175  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' is desired by: main
175 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' is desired by: main
175  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' is being obtained: main
175 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' is being obtained: main
175  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' given to: main
175 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' given to: main
1306 INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310645568894 shutting down.
1306 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310645568894 shutting down.
1307 INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310645568894 paused.
1307 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310645568894 paused.
1307 INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310645568894 shutdown complete.
1307 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310645568894 shutdown complete.
org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server 127.0.0.1 am Port 1527. Nachricht: Connection refused: connect.) [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server 127.0.0.1 am Port 1527. Nachricht: Connection refused: connect.)]]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:612)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:56)
	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1274)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1465)
	at com.cron.AlarmSchedule.<init>(AlarmSchedule.java:17)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server 127.0.0.1 am Port 1527. Nachricht: Connection refused: connect.) [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server 127.0.0.1 am Port 1527. Nachricht: Connection refused: connect.)]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:695)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:69)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3765)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3730)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanVolatileTriggerAndJobs(JobStoreSupport.java:752)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:610)
	... 23 more
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server 127.0.0.1 am Port 1527. Nachricht: Connection refused: connect.)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.quartz.utils.PoolingConnectionProvider.getConnection(PoolingConnectionProvider.java:194)
	at org.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:109)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:692)
	... 28 more
Caused by: java.sql.SQLNonTransientConnectionException: java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server 127.0.0.1 am Port 1527. Nachricht: Connection refused: connect.
	at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
	at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
	at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
	... 33 more
Caused by: org.apache.derby.client.am.DisconnectException: java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server 127.0.0.1 am Port 1527. Nachricht: Connection refused: connect.
	at org.apache.derby.client.net.NetAgent.<init>(Unknown Source)
	at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source)
	at org.apache.derby.client.am.Connection.<init>(Unknown Source)
	at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
	at org.apache.derby.client.net.NetConnection40.<init>(Unknown Source)
	at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConnection(Unknown Source)
	... 38 more
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:529)
	at java.net.Socket.connect(Socket.java:478)
	at java.net.Socket.<init>(Socket.java:375)
	at java.net.Socket.<init>(Socket.java:189)
	at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:206)
	at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	... 44 more
1312 INFO  [main]            com.cron.InitializeServlet     - ### Scheduler successfully initialized
1312 [main] INFO com.cron.InitializeServlet  - ### Scheduler successfully initialized
Also ich habe die DB eigentlich "ordentlich aufgesetzt". Hab mir ein Tool runtergeladen, welches mir das Verzeichnis und die DB in meinem Projektordner erstellt hat, dann das Script aus Quartz durchgezogen für Derby. Die Tabellen sind vorhanden.

Edit: BTW, ich hatte vorher eine HSQLDB, die eigentlich genau dieselben Fehler (oder sehr vergleichbare) geschossen hat. Deswegen bin ich auf Derby umgeschwenkt. Eine davon soll es wohl werden, da man die halt embedded laufen lassen kann und nicht extra ne MySQL DB zur Verfügung stellen muss bzw. man könnte eine nutzen die da ist, allerdings soll diese selbst von der Anwendung überwacht werden und daher wäre das suboptimal.

Edit2: Ich bin übrigens Azubi im (noch) 1. Lehrjahr, bin daher noch nicht ganz soweit (ist meine erste größere Anwendung) und bin z.B. nun das erste mal mit Properties in Berührung gekommen. Mit Datenbanken hatte ich sonst bisher nicht so meine Probleme, eine kleine GUI-Inventarisierung mit MySQL-Anbindung habe ich eigentlich ohne großartige Probleme erstellt. Wenn also noch weitere Angaben benötigt werden sollten, bitte mitteilen :)
 
Zuletzt bearbeitet:
M

maki

Gast
Connection refused: connect
Die DB ist wohl nicht gestartet.

Es gibt einen riesiegen Unterschied ob man HSQLDB/Derby als embedded DB laufen läst, oder als Server ;)
Die Servervarianten müssen vorher gestartet werden, wie bei anderen DB Server eben auch.
 

JavaKaffee

Mitglied
Okay und was kann ich nun tun? Ich (arbeite übrigens in Eclipse) habe ein Plug-In, in welchem ich den "Derby Network Server starten" kann. Muss ich das vorher tun? Das funktioniert an sich noch (wobei ich irgendwie zwei Einträge bekomme, anfangs war es nur einer meine ich) ->
Code:
Thu Jul 14 14:29:17 CEST 2011 : Sicherheitsmanager mit einfacher Server-Sicherheitsrichtlinie installiert.
Thu Jul 14 14:29:18 CEST 2011 Thread[main,5,main] java.security.AccessControlException: access denied (java.io.FilePermission derby.log read)
Thu Jul 14 14:29:18 CEST 2011 : Apache Derby Network Server 10.8.1.2 - (1095077) wurde gestartet und ist bereit, Verbindungen am Port 1527 zu akzeptieren.
Thu Jul 14 14:29:18 CEST 2011 : Apache Derby Network Server 10.8.1.2 - (1095077) wurde gestartet und ist bereit, Verbindungen am Port 1527 zu akzeptieren.

Aber wenn ich dann das Projekt über "Run on Server" auf meinem Tomcat starte, bekomme ich ->
Code:
Thu Jul 14 14:30:21 CEST 2011 Thread[DRDAConnThread_2,5,main] Cleanup action starting
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
	at java.lang.System.getProperty(System.java:650)
	at java.io.Win32FileSystem.getUserPath(Win32FileSystem.java:296)
	at java.io.Win32FileSystem.resolve(Win32FileSystem.java:312)
	at java.io.File.getCanonicalPath(File.java:559)
	at org.apache.derby.impl.io.DirStorageFactory.doInit(Unknown Source)
	at org.apache.derby.impl.io.BaseStorageFactory.init(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.privGetStorageFactoryInstance(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.access$400(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService$11.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.getCanonicalServiceName(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(Unknown Source)
	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source)
	at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
	at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
	at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
	at org.apache.derby.impl.drda.Database.makeConnection(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
Cleanup action completed
Thu Jul 14 14:30:21 CEST 2011 Thread[DRDAConnThread_2,5,main] Cleanup action starting
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
	at java.lang.System.getProperty(System.java:650)
	at java.io.Win32FileSystem.getUserPath(Win32FileSystem.java:296)
	at java.io.Win32FileSystem.resolve(Win32FileSystem.java:312)
	at java.io.File.getCanonicalPath(File.java:559)
	at org.apache.derby.impl.io.DirStorageFactory.doInit(Unknown Source)
	at org.apache.derby.impl.io.BaseStorageFactory.init(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.privGetStorageFactoryInstance(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.access$400(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService$11.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.getCanonicalServiceName(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(Unknown Source)
	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source)
	at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
	at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
	at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
	at org.apache.derby.impl.drda.Database.makeConnection(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
Cleanup action completed
Thu Jul 14 14:30:21 CEST 2011 Thread[DRDAConnThread_2,5,main] (DATABASE = scheduler), (DRDAID = {1}), Java exception: 'access denied (java.util.PropertyPermission user.dir read): java.security.AccessControlException'.

Die index.jsp wird dennoch im Browser angezeigt, nachdem das InitializeServlet (scheinbar nicht erfolgreich) beim startup mitgeladen wurde.

Edit: Brauch ich btw weitere jars außer die derbyclient.jar aus dem Paket? Es gibt ja noch die Sprachpakete und die derbyrun.jar und derbytools.jar oder so.
 
Zuletzt bearbeitet:
M

maki

Gast
Hehe, so ist das manchmal, den 1. Fehler hast du korrigiert, dann auch den zweiten, da kommt der dritte um die Ecke...

Scheint ein Berechtigungsproblem zu sein, der Securitymanager ist wohl aktiv und so konfiguriert, dass der Zugriff auf bestimmte Ordner (user.dir) verboten ist.
Deaktiviere ihn doch mal.
 

JavaKaffee

Mitglied
Sorry, das mache ich wie?^^

Btw. muss ich die Jobstore Geschichte über den Network-Server laufen lassen oder kann ich das auch embedded lösen, also dass der Server/die DB-Verbindung aus dem Java-Code (im InitializeServlet?) gestartet wird und Quartz sich dann daran vergreifen darf?

Ich möchte ungern darauf ausweichen müssen, die im Formular erstellen CronJobs "per Hand" in eine DB speichern und beim initialisieren wieder rausholen zu müssen, wenn Quartz doch so intelligent ist, das ganz automatisch zu verrichten.^^
 

turtle

Top Contributor
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)

Da läuft der Tomcat MIT einem Security-Manager. Entweder gibst Du deiner Applikation die Berechtigung, oder zum Test starte den Tomcat mal ohne Securitymanager.
 

JavaKaffee

Mitglied
Also ich hab mal den Tomcat konfiguriert und durfte da den Haken "Enable Security" setzen. Das habe ich gemacht, den Apache Derby Network Server gestartet und dann mein Projekt auf dem Tomcat. Ich habe keine Fehlermeldung erhalten bisher (nur immernoch den doppelten Startversuch von Derby o_O) , Tomcat meckert auch nicht.

Jetzt meint mein Logger: Failet to initialize Schedule xD (ich werd bekloppt^^).

ich glaube ich weiß auch wo, ich hatte schon vorher mal den Debugger mitlaufen lassen und er motzt immer dann, wenn er getSchedule aus der Factory ausführt, da hat er sozusagen "die Exception" (also mein selbst ersteller Fail-Log) geworfen.

Hä ok, hab jetzt nochmal den Stacktrace wieder eingefügt. Das kommt raus ->
Code:
java.security.AccessControlException: access denied (java.util.PropertyPermission org.quartz.properties read)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
	at java.lang.System.getProperty(System.java:650)
	at org.quartz.impl.StdSchedulerFactory.initialize(StdSchedulerFactory.java:344)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1450)
	at com.cron.AlarmSchedule.<init>(AlarmSchedule.java:17)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	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.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:270)
	at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
	at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:302)
	at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:163)
	at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:117)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1167)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Ist also immernoch die Security-Sache oder? Wie gesagt ich konnte nur den Haken in der Configurations-Oberfläche setzen (Enable Security), dieser war nicht aktiviert. War es denn überhaupt der richtige?
 
Zuletzt bearbeitet:

JavaKaffee

Mitglied
Kann mir noch wer helfen? :oops:

Es hängt jetzt scheinbar noch an der quartz.properties, die er nich lesen darf. Ich hatte auch schonmal testweise in der catalina.properties den Grant für den tomcat (tomcat-juli.jar) auf erlaubnis für alles gesetzt, aber ohne Erfolg. Die Exception bleibt wie im letzten Beitrag gezeigt.
Wenn ich in der Config-Oberfläche des Tomcat den "Enable Securiy" Haken wieder wegnehme, bekomme ich ->
Code:
org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U) [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U)]]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:612)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:56)
	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1274)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1465)
	at com.cron.AlarmSchedule.<init>(AlarmSchedule.java:17)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U) [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U)]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:695)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:69)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3765)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3730)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanVolatileTriggerAndJobs(JobStoreSupport.java:752)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:610)
	... 23 more
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.quartz.utils.PoolingConnectionProvider.getConnection(PoolingConnectionProvider.java:194)
	at org.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:109)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:692)
	... 28 more
Caused by: java.sql.SQLException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U
	at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
	at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
	at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
	... 33 more
Caused by: org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U
	at org.apache.derby.client.am.Connection.completeSqlca(Unknown Source)
	at org.apache.derby.client.net.NetConnectionReply.parseRdbAccessFailed(Unknown Source)
	at org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(Unknown Source)
	at org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(Unknown Source)
	at org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(Unknown Source)
	at org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(Unknown Source)
	at org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(Unknown Source)
	at org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(Unknown Source)
	at org.apache.derby.client.net.NetConnection.flowConnect(Unknown Source)
	at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
	at org.apache.derby.client.net.NetConnection40.<init>(Unknown Source)
	at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConnection(Unknown Source)
	... 38 more
423  INFO  [main]            com.cron.InitializeServlet     - ### Scheduler successfully initialized
423 [main] INFO com.cron.InitializeServlet  - ### Scheduler successfully initialized

Also was ganz neues mit altem gemischt.^^ Bei dem vorigen Versuch scheitert der Scheduler jedoch, bei diesem hier nicht o_O
 
M

maki

Gast
Immer noch der SecurityManager, ist eben noch nicht abgeschaltet ;)

Mal etwas grundsätzliches:
Tomcat muss man nicht mit dem Installer "installieren", lade dir die Zip Datei runter, entpacke sie, fertig, da ist dann auch kein SecurityManager aktiviert.
 

JavaKaffee

Mitglied
Ich habe das nochmal extern mit nem Kollegen konfiguriert und den Tomcat dann nur mit catalina run (ohne -security) gestartet. Dabei hat er wie er soll das Servlet mitgeladen und ich habe mal ins Log geguckt -> keine Änderung
Code:
14.07.2011 16:01:01 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
14.07.2011 16:01:01 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()
14.07.2011 16:04:12 org.apache.catalina.core.ApplicationContext log
INFO: 0    INFO  [main]            com.cron.InitializeServlet     - ### Servlet Initialized successfully
0 [main] INFO com.cron.InitializeServlet  - ### Servlet Initialized successfully
1    INFO  [main]            com.cron.InitializeServlet     - ### Initializing Scheduler
1 [main] INFO com.cron.InitializeServlet  - ### Initializing Scheduler
157  INFO  [main] org.quartz.core.SchedulerSignalerImpl     - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
157 [main] INFO org.quartz.core.SchedulerSignalerImpl  - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
157  INFO  [main]       org.quartz.core.QuartzScheduler     - Quartz Scheduler v.1.8.5 created.
157 [main] INFO org.quartz.core.QuartzScheduler  - Quartz Scheduler v.1.8.5 created.
159  INFO  [main] org.quartz.impl.jdbcjobstore.JobStoreTX     - Using thread monitor-based data access locking (synchronization).
159 [main] INFO org.quartz.impl.jdbcjobstore.JobStoreTX  - Using thread monitor-based data access locking (synchronization).
162  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' is desired by: main
162 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' is desired by: main
162  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' is being obtained: main
162 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' is being obtained: main
162  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' given to: main
162 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' given to: main
1293 INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310652251604 shutting down.
1293 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310652251604 shutting down.
1293 INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310652251604 paused.
1293 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310652251604 paused.
1293 INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310652251604 shutdown complete.
1293 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1310652251604 shutdown complete.
org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server localhost am Port 1527. Nachricht: Connection refused: connect.) [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server localhost am Port 1527. Nachricht: Connection refused: connect.)]]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:612)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:56)
	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1274)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1465)
	at com.cron.AlarmSchedule.<init>(AlarmSchedule.java:17)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server localhost am Port 1527. Nachricht: Connection refused: connect.) [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server localhost am Port 1527. Nachricht: Connection refused: connect.)]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:695)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:69)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3765)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3730)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanVolatileTriggerAndJobs(JobStoreSupport.java:752)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:610)
	... 23 more
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server localhost am Port 1527. Nachricht: Connection refused: connect.)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.quartz.utils.PoolingConnectionProvider.getConnection(PoolingConnectionProvider.java:194)
	at org.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:109)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:692)
	... 28 more
Caused by: java.sql.SQLNonTransientConnectionException: java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server localhost am Port 1527. Nachricht: Connection refused: connect.
	at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
	at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
	at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
	... 33 more
Caused by: org.apache.derby.client.am.DisconnectException: java.net.ConnectException: Fehler beim Herstellen der Verbindung zum Server localhost am Port 1527. Nachricht: Connection refused: connect.
	at org.apache.derby.client.net.NetAgent.<init>(Unknown Source)
	at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source)
	at org.apache.derby.client.am.Connection.<init>(Unknown Source)
	at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
	at org.apache.derby.client.net.NetConnection40.<init>(Unknown Source)
	at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConnection(Unknown Source)
	... 38 more
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:529)
	at java.net.Socket.connect(Socket.java:478)
	at java.net.Socket.<init>(Socket.java:375)
	at java.net.Socket.<init>(Socket.java:189)
	at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:206)
	at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	... 44 more
1297 INFO  [main]            com.cron.InitializeServlet     - ### Scheduler successfully initialized
1297 [main] INFO com.cron.InitializeServlet  - ### Scheduler successfully initialized

14.07.2011 16:04:13 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
14.07.2011 16:04:13 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()

Bin ich jetzt einfach zu doof, um es richtig zu machen oder muss ich noch mehr tun, um keinen Security Manager zu "betreiben"?^^
 

JavaKaffee

Mitglied
Okay, neues Problem für mich xD Ich kann also das Projekt selbst nun von außerhalb Eclipse starten, habe die Datenbank allerdings bisher immer über dieses Plugin (Apache Derby nature) gestartet. Wenn ich das wieder tue und das Projekt über die Windows Kommandozeile starte (bzw. Tomcat), dann krieg ich in Eclipse das hier nach dem Derby Network Server Start ->
Code:
Thu Jul 14 17:13:34 CEST 2011 Thread[DRDAConnThread_2,5,main] Cleanup action starting
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
	at java.lang.System.getProperty(System.java:650)
	at java.io.Win32FileSystem.getUserPath(Win32FileSystem.java:296)
	at java.io.Win32FileSystem.resolve(Win32FileSystem.java:312)
	at java.io.File.getCanonicalPath(File.java:559)
	at org.apache.derby.impl.io.DirStorageFactory.doInit(Unknown Source)
	at org.apache.derby.impl.io.BaseStorageFactory.init(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.privGetStorageFactoryInstance(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.access$400(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService$11.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.getCanonicalServiceName(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(Unknown Source)
	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source)
	at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
	at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
	at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
	at org.apache.derby.impl.drda.Database.makeConnection(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
Cleanup action completed
Thu Jul 14 17:13:34 CEST 2011 Thread[DRDAConnThread_2,5,main] Cleanup action starting
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
	at java.lang.System.getProperty(System.java:650)
	at java.io.Win32FileSystem.getUserPath(Win32FileSystem.java:296)
	at java.io.Win32FileSystem.resolve(Win32FileSystem.java:312)
	at java.io.File.getCanonicalPath(File.java:559)
	at org.apache.derby.impl.io.DirStorageFactory.doInit(Unknown Source)
	at org.apache.derby.impl.io.BaseStorageFactory.init(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.privGetStorageFactoryInstance(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.access$400(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService$11.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.getCanonicalServiceName(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(Unknown Source)
	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source)
	at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
	at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
	at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
	at org.apache.derby.impl.drda.Database.makeConnection(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source)
	at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
Cleanup action completed
Thu Jul 14 17:13:34 CEST 2011 Thread[DRDAConnThread_2,5,main] (DATABASE = scheduler), (DRDAID = {1}), Java exception: 'access denied (java.util.PropertyPermission user.dir read): java.security.AccessControlException'.
Also wieder irgendwas, was nicht zugreifbar ist^^ Muss ich da jetzt auch noch iwo rumkonfigurieren?
 
M

maki

Gast
Der SecurityManager läuft schon wieder.

Solltest die Fehlermeldungen ja mittlerweile schon selber erkennen und einordnen können, steht ja alles da, schon wieder mal ;)
 

JavaKaffee

Mitglied
Aber wer macht den denn an? Ich ja nicht^^ Ich habe Tomcat über die Kommandozeile mit "catalina run" im Tomcat-Verzeichnis gestartet. Tu ich das allein, kommt die Geschichte mit dem fehlenden Datenbank-Zugriff (logisch, da Server aus). Starte ich also dieses dämliche Derby-Gerät in Eclipse zusätzlich, um meine Datenbank verfügbar zu machen, schießt er mir das Ding sofort ab und gibt mir die obige Meldung. Kann ich denn in diesem vermaledeiten Derby-Monster auch irgendwo was konfigurieren?
Ich kann ja schlecht einen Security Manager ausschalten, wenn ich keinen bewusst einschalte und unbewusst keiner mitgestartet werden dürfte, AUßER Eclipse erlaubt sich auch noch beim Start der Derby Datenbank die Grütze wieder einzuschalten. Wo ich ihm das verbiete, weiß ich allerdings immernoch nicht. Wie kann ich dieses Mistvieh denn über die Konsole starten evtl.? Geht das vll. gescheit?
Ich hab auch übrigens noch diese Variante anzubieten (Derby SQL Error)->
Code:
org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U) [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U)]]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:612)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:56)
	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1274)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1465)
	at com.cron.AlarmSchedule.<init>(AlarmSchedule.java:17)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U) [See nested exception: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U)]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:695)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:69)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3765)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3730)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanVolatileTriggerAndJobs(JobStoreSupport.java:752)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:610)
	... 23 more
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.quartz.utils.PoolingConnectionProvider.getConnection(PoolingConnectionProvider.java:194)
	at org.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:109)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:692)
	... 28 more
Caused by: java.sql.SQLException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U
	at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
	at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
	at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
	... 33 more
Caused by: org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: java.security.AccessControlExceptionaccess denied (java.util.PropertyPermission user.dir read)XJ001.U
	at org.apache.derby.client.am.Connection.completeSqlca(Unknown Source)
	at org.apache.derby.client.net.NetConnectionReply.parseRdbAccessFailed(Unknown Source)
	at org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(Unknown Source)
	at org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(Unknown Source)
	at org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(Unknown Source)
	at org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(Unknown Source)
	at org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(Unknown Source)
	at org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(Unknown Source)
	at org.apache.derby.client.net.NetConnection.flowConnect(Unknown Source)
	at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
	at org.apache.derby.client.net.NetConnection40.<init>(Unknown Source)
	at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConnection(Unknown Source)
	... 38 more
375  INFO  [main]            com.cron.InitializeServlet     - ### Scheduler successfully initialized
375 [main] INFO com.cron.InitializeServlet  - ### Scheduler successfully initialized

14.07.2011 17:32:00 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
14.07.2011 17:32:00 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
14.07.2011 17:32:18 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
14.07.2011 17:32:18 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()

Ist ja auch super, wenn ich weiß, was mein Problem ist, ich aber leider trotzdem keine Peilung bekomme, wie ich es abstellen kann.
Habe ich die Datenbank aus, krieg ich keine Connection, mach ich sie an, krieg ich keinen Zugriff, obwohl ich Tomcat ohne security manager gestartet habe. Wenn Derby also meint auch noch einen haben zu dürfen, dann wüsst ich gern, wie ich den loswerden kann/Derby so starten kann, dass ich keine Sicherheitsumgebung mitstarte.
 
Zuletzt bearbeitet:
M

maki

Gast
Denke dass dein Problem u.a. ist, dass du versuchst das alles über irgendwelche Plugins in deiner IDE zu machen, ohne zu wissen was du da eigentlich machst ;)

Starte Derby doch mal von der Kommandozeile.
 

JavaKaffee

Mitglied
Wenn mir die blöde Dokumentation "für Anfänger" sagt, ich soll PlugIns in Eclipse installieren, die ein Anfänger in dem Bereich nicht bedienen kann, dann soll jemand meinetwegen die Dokumentation umschreiben.

Und wenn ich das Ding über die Konsole starte passiert auch nichts besseres. Es startet ja sowieso immer mit dieser Sicherheitsrichtlinie, egal auf welchem Weg ich es starte und finden will es meine Datenbank auf diesem Weg auch nichtmal mehr. -.-
 

JavaKaffee

Mitglied
Ich habs nun erstmal gelöst, musste im Tomcat nochmal n paar permissions setzen und es tut erstmal. Ich krieg die Jobs sowohl in eine ClientVersion von Derby, als auch Embedded gespeichert, mehr brauch ich erstmal nicht um die FUnktionalität weiter voranzutreiben.

Danke, auch wenn mir oft nur Hinweise gegeben wurden, was ich nun tun soll, aber nicht wie, was eigentlich mein größeres Problem war. Aber gut, wenigstens weiß ich nun woran es gelegen hat und was ich grundsätzlich dagegen tun soll.
 

turtle

Top Contributor
Start von Derby OHNE SecurityManager
Java:
java org.apache.derby.drda.NetworkServerControl start -h localhost -noSecurityManager
 

JavaKaffee

Mitglied
Danke noch für die Antwort, kann aber aktuell alles eig aus Eclipse heraus regeln erstmal.

Hab grad aber noch ein kleines Problem:
Ich nutze ja die embedded Version von Derby, funktionieren tut es auch, allerdings unter der aktuellen Voraussetzung, dass ich in der quartz.properties die URL der Datenbank absolut (Dateipfad) angegeben habe.

Wenn ich davon ausgehe, dass der relative Pfad vom Standort der quartz.properties zu wählen wäre, müsste ich einfach nur in den vorigen Ordner -> ..\\scheduler
Wenn ich das aber mache, versucht er auf eine Datenbank in C:\\Scheduler zuzugreifen (lt. Exception), wieso das? Der Projektordner ist auf jedenfall weit weit vom Urverzeichnis C: entfernt.
 

JavaKaffee

Mitglied
Wo du Recht hast...^^

Es geht darum, diverse Systeme im Betrieb zu überwachen (MySQL-Server etc.), sprich auf Verfügbarkeit testen usw. Dafür sollen Jobs mit dazugehörigen Triggern frei konfigurierbar sein. Da Quartz das (Scheduling) ja eigentlich so toll kann (hat es ja bei mir auch schon gezeigt ansonsten), wird das für die Regelung der Zeiten verwendet. Die Datenbankanbindung klappt wie gesagt auch, aber nur per absolutem Pfad und das ist der Haken, wenn die eigentliche Webanwendung später auf dem Server läuft. Ich finde aber (bzw. die Anwendung tuts) nicht den passenden Pfad im relativen Sinne. Ich ging wie gesagt davon aus, dass der Pfad in Relation von der properties-Datei abhängt, das tut sie scheinbar aber nicht. Ich suche folglich nach einer Lösung dafür oder nach einer Alternative (ohne dabei den weg der Embedded-Geschichte zu verlassen, die ist recht komfortabel).

Btw.: Meine Datenbank liegt direkt auf der obersten Ebene des Projekts (also direkt im Projektordner)
 
Zuletzt bearbeitet:

turtle

Top Contributor
Danke für die Erklärung, wobei ich aber nicht verstehe, warum Quartz eine DB-Verbindung aufbauen muss.

Aber Du hast Doch immer noch eine Webapplikation unter einem Tomcat laufen, oder? Wenn ja, bin ich der Meinung, dass die DB in das Webverzeichnis gepackt werden sollte, also <CATALINA_HOME>/webapps/<DeineApplikation>/Database

Dann muss noch geklärt werden, wie der Start des ganzen Systems aussieht. Jedenfalls muss die quartz.properties im Classpath der Webapplikation zu finden sein und für <CATALINA_HOME>/webapps/<DeineApplikation>/WEB-INF/classes ist dies der Fall.
 

JavaKaffee

Mitglied
Also um dann vll. mal der Struktur halber "aufzuräumen", erklär ich mal, wo bei mir alles liegt, was so verwendet wird:

Projekt -> Eclipse-Workspace (natürlich aus Eclipse heraus erstellt)
Tomcat -> Eclipse-Workspace/Servers (auch durch Einrichtung von Tomcat durch Eclipse)
DerbyDB -> Eclipse-Workspace/Projektordner (ebenfalls per Eclipse erstellt)

Quartz kann ja auf verschiedene Arten die Jobs erhalten, z.B. indem die Jobs gestartet werden und für die Laufzeit der Anwendung dann im RAM vorgehalten werden, eine andere Herangehensweise ist halt, die Jobs mit JDBC in einer DB zu verwahren, um diese dann auch nach Neustart des Systems durch einfaches "Anwerfen" des Schedulers wieder zum Laufen zu bringen. Daher die DB-Anbindung. Man kann das ganze ja auch noch per Client-Server-Konstrukt lösen, wozu es ja auch einen Treiber gibt, da ich aber unabhängig von etwaigen weiteren Servern (außer dem Tomcat) bleiben wollte und es auch so von betrieblicher Seite angefragt wurde, sollte es eine Embedded-Lösung sein, um es möglichst unkompliziert zu halten. An sich ist es das ja auch.^^ Es tut ja bisher lokal ansonsten das, was es soll (natürlich noch net im ganzen Umfang, aber das was "fertig ist", funzt).

Folglich hab ich Projekt nicht im CATALINA_HOME (die Variable ist bei mir auch gar nicht festgelegt bisher) und dann noch was, wo dus grad ansprichst:

Ja, ich weiß, dass die properties eigentlich in das classes-Verzeichnis muss. Sie war es auch lange Zeit. Wenn ich allerdings Klassen erstelle o.ä. in Eclipse, wird das Verzeichnis manchmal bereinigt und dann schießt der mir alles in dem Ordner ab, was keine Klasse ist, folglich verschwindet die properties dauernd. Daher habe ich sie vorübergehend umgelagert und an entsprechender Stelle im Code, wo ich den Scheduler instanziiere, einen relativen Verweis auf die Datei gegeben.
 

Anhänge

  • scr.JPG
    scr.JPG
    9,7 KB · Aufrufe: 31
  • scr1.JPG
    scr1.JPG
    10,3 KB · Aufrufe: 27
  • scr2.JPG
    scr2.JPG
    11,1 KB · Aufrufe: 28
Zuletzt bearbeitet:

turtle

Top Contributor
Dann gebe ich mal eine kleine Zusammenfassung wie ich mit Eclipse Webapplikationen aufsetze.

Ich erstelle zunächst ein "Dynamisches Webprojekt". Dann rufe ich in Eclipse "View/Show View" auf und wähle dann Server. Darin erstelle ich einen neuen Server-Eintrag, der ein Apache/Tomcat wird. Hier musst Du dann das Verzeichnis selektieren in denen der Tomcat abgelegt ist. Dieses wird häufig als CATALINA_HOME definiert, weil in eingen Skripten diese Environment-variable diesen Pfad beschreibt. Wenn Du den Server-Eintrag danach selektierst kannst Du Web-Module (z.B. Dein dynamisches Webprojekt) hinzufügen. Dieses führt dazu, dass der Tomcat innerhalb von Eclipse laufen kann und nur die angegeben Module startet. Daneben kannst Du schön debuggen wie in Eclipse gewohnt. Deine "normale" Tomcat-Installation ist davon komplett unabhängig.

Als Build-Path gebe ich an, dass der Output-Folder WebContent/WEB-INF/classes des Webprojektes ist. Daher werden durch das Kompilieren von Eclipse automatisch alle Klassen neu für den Tomcat erzeugt. Dieses bedeutet aber auch, dass Du Dateien, die Du im Output-Folder haben möchtest, durch den Builkd-Prozess laufen müssen. Eclipse kopiert alle Dateien, die nicht Java sind, in den Output-Folder. Daher muss Deine quartz.properties im src-Ordner Deines Webprojektes stehen. Dann wird diese Datei durch den Eclipse-Build auch wieder in den Output-Folder für den Tomcat kopiert.
 

JavaKaffee

Mitglied
Detailliert und 100% verständlich. So wünsche ich mir antworten. Einen riesen Dank dafür, dann kann ich morgen damit schonmal weiterarbeiten, das motiviert.

Bis auf die Sache mit dem Web-Module und der einleuchtenden Geschichte mit der properties in den src-Folder hatte ich dann ja schonmal nichts anders gemacht, gut.

Die vorigen Antworten haben mir z. T. nicht so sehr geholfen, da ich bisher kaum über die Konsole gearbeitet habe. Ich weiß, manchmal muss man das und manche machen das auch öfters oder gar bevorzugt, aber ich bin leider schon aus ner Generation mit fast ausschließlich GUI, mag man es falsche Erziehung nennen.^^ Ist ja irgendwo auch mein Fehler. Nun gut, ich bin den Komfort der IDE gewohnt und wie man sieht kann man ja auch den Großteil damit abarbeiten und das nach wenigen Konfigurationen anschließend meist viel komfortabler.

Nun gut, ich verabschiede mich für heute und schau mir das morgen an. Vielen Dank nochmal! Bei Problemen o.ä. meld ich mich wieder.

Edit:
Meintest du mit dem Web-Module die Option "Add and Remove" wenn ich unten in der View auf den Server rechtsklicke? Da ist das Projekt auch schon drin. Müsste es doch eig. eh wenn es ansonsten über den Server erfolgreich geladen wird oder?
 
Zuletzt bearbeitet:

JavaKaffee

Mitglied
Okay, gesagt, getan. Hat dann soweit funktioniert, dass ich mit ->
Code:
jdbc:derby:scheduler
Aus einer JavaKlasse eine Datenbankverbindung aufbauen konnte, wenn ich selbiges aber in die properties von Quartz eintrage, er die DB aber angeblich nicht findet. Mit dem absoluten Pfad geht es aber.

Des Weiteren besteht die Problematik, dass wenn ich die policy vom Tomcat wieder auf "normal" setze (aktuell habe ich Permissions für alles gesetzt, damit der Zugriff gestattet wird), der Zugriff auf die DB verhindert wird. Wenn ich mich recht entsinne wurde zu Anfang aber auch der Zugriff auf die properties verboten. Dies scheint nun nicht mehr der Fall zu sein, sondern nur noch auf die DB. Ein Server muss hier doch aber nicht mehr laufen, da es embeddet arbeitet (und es mit den nötigen Rechten ja auch funzt), was muss hier also noch geschehen?

Meinen Initialisierungsvorgang für den Scheduler führe ich im Übrigen so durch:
Code:
StdSchedulerFactory sf = new StdSchedulerFactory();
			sf.initialize("quartz.properties");
			Scheduler sched = sf.getScheduler();

Ich muss doch keine zusätzliche DB-Verbindung im Java-Code aufbauen oder?^^
 
Zuletzt bearbeitet:

turtle

Top Contributor
jdbc:derby:scheduler erwartet die Datenbank im Verzeichnis, aus dem Du auch das Programm startest, da kein Pfad angegeben wird.

Dies wird mit Tomcat nicht gehen, weil da das ausführende Verzeichnis sehr "anders" sein kann. Ich weiss auch nicht genau, ob das Eclipse-Verzeichnis gemeint ist, oder Du je nach Einrichtung/Start von Tomcat dessen Verzeichnis gemeint ist.

Daher empfehle ich derartige Umgebungsproblematiken auszulagern, zumal hierzu eine schöne Lösung existiert. Derartige Web-Resourcen werden normalerweise über JNDI aufgelöst.

Damit trennst Du quasi den Aufenthaltsort einer DB von seiner Nutzung in Tomcat und ermöglichst, dass Du leicht auf Umgebungsänderungen reagieren kannst.

Ich kann leider nur grob skizzieren, was zu tun ist. Genauere Informationen kann Dir aber Google liefern. In dem Tomcat-Server, den Du innerhalb von Eclipse definiert hast, gibt es ebenfalls wie im richtigen Tomcat, eine server.xml Konfigurationsdatei. In dieser musst Du einen Resource-Eintrag vom Typ javax.sql.DataSource definieren. In Deiner web.xml benötigst Du dann ein resource-ref Element, der auf das Element aus server.xml verweist.

In Deinem Code kannst Du dann
Java:
Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/<DeinName>");
Connection conn = ds.getConnection();
die DB-Verbindung zur Datenbank aufbauen. Du siehst, das dem Programm-Code überhaupt nicht bekannt ist, zu welcher Datenbank eine Verbindung aufgebaut wird. Ändert sich das irgendwann einmal, muss "nur" die web.xml und/oder server.xml angepasst werden.

Den Aufbau des Schedulers würde ich anders machen, da ich immer komisch werde:), wenn ich einfach absolute Pfade im Code sehe. Dies ist, wie ich oben angemerkt habe, immer sehr von der Umgebung abhängig. Ich würde dass über den Classpath machen:
Java:
        StdSchedulerFactory sf = new StdSchedulerFactory();
		sf.initialize(getClass().getClassLoader().getResourceAsStream("quartz.properties"));
		Scheduler sched = sf.getScheduler();

Das Problem mit den Permissions zur Datenbank finde ich auch merkwürdig und stimme zu, dass Quartz (über JNDI) eine DB-Verbindung aufbauen muss.
Normalerweise sollte da eine SecurityException kommen, die genau angibt, welche Permission fehlt. Kannst Du diese nennen oder sagen, woran Du erkennst das der DB-Aufbau nicht klappte? Ich bin der Meinung, dass Du den Aufbau erst einmal über JNDI einbauen solltest. Ich habe gesehen, dass dies auch in der quartz.properties angegeben werden kann. Ich vermute aber, dass die Tabellen für Quartz in der Db bereits angelegt worden sind, oder?
 

JavaKaffee

Mitglied
Ohne den Rest deines Beitrages abgearbeitet zu haben beantworte ich deine letzte Frage erstmal mit ja. Der Zugriff auf die Jobs in der DB läuft auch, nach (testweise) erneutem Start des Projektes werden die zuvor gespeicherten Jobs einfach wieder aus der DB geladen und über das InitializeServlet (startet den Scheduler) wieder durchgeführt wie es sein sollte.

Die Initialisierung des Schedulers kann ich mittlerweile durch den Move der properties in das src-Verzeichnis vornehmen, ohne die initialize-Methode aufzurufen. Ich brauche nur noch die Factory und kann dann getScheduler() aufrufen, um mit diesem zu arbeiten.

Die Problematik mit dem DB-Zugriff teste ich wie gesagt nochmal (die Excpetion kann ich nochmal nachliefern später, leider konnte ich bisher nichts besonderes erkennen, woran es scheitert, eine spezielle Permission habe ich nicht gesehen, aber vll. habe ich sie auch in der Masse des Auswurfs einfach übersehen).

Mit dem Tomcat kennt sich mein Kollege neben mir besser aus, daher werde ich ihn bei der besagten Änderung mal um Hilfe bitten. Das JNDI werde ich noch ausprobieren. Hatte bisher ja noch keinen zwingenden Bedarf danach.

Ein weiteres Danke ist aber schonmal fällig für den Einblick ins Innere der Mechanik.

Edit: Im Nachgang die Exception ->
Code:
java.security.AccessControlException: access denied (java.io.FilePermission C:\Users\JavaKaffee\workspace_java\MonitoringServer\scheduler read)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
	at java.io.File.exists(File.java:731)
	at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:402)
	at java.io.File.getCanonicalPath(File.java:559)
	at org.apache.derby.impl.io.DirStorageFactory.doInit(Unknown Source)
	at org.apache.derby.impl.io.BaseStorageFactory.init(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.privGetStorageFactoryInstance(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.access$400(Unknown Source)
	at org.apache.derby.impl.services.monitor.StorageFactoryService$11.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.derby.impl.services.monitor.StorageFactoryService.getCanonicalServiceName(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(Unknown Source)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(Unknown Source)
	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source)
	at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
	at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
	at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.quartz.utils.PoolingConnectionProvider.getConnection(PoolingConnectionProvider.java:194)
	at org.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:109)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:692)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:69)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3765)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3730)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanVolatileTriggerAndJobs(JobStoreSupport.java:752)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:610)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:56)
	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1274)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1465)
	at com.cron.CronScheduler.<init>(CronScheduler.java:13)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	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.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:270)
	at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
	at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:302)
	at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:163)
	at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:117)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1167)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Ist das erste was (mehrmals nacheinander) auftaucht, in rot ganz zum Schluss dann nochmal ->
Code:
java.security.AccessControlException: access denied (java.util.PropertyPermission org.quartz.properties read)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
	at java.lang.System.getProperty(System.java:650)
	at org.quartz.impl.StdSchedulerFactory.initialize(StdSchedulerFactory.java:344)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1450)
	at org.apache.jsp.index_jsp._jspService(index_jsp.java:415)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	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.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:270)
	at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
	at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:302)
	at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:163)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
	at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
	at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:662)

Also doch wieder die properties, die er nicht lesen darf, was ich zuvor aber übersehen hatte, da ich nur weiter oben in die Exceptions geschaut hatte.
 
Zuletzt bearbeitet:

JavaKaffee

Mitglied
Aber eigentlich müsste das doch auch so funktionieren ->
Code:
#The details of the datasource specified previously
org.quartz.dataSource.myDS.driver = org.apache.derby.jdbc.EmbeddedDriver
org.quartz.dataSource.myDS.URL = jdbc:derby:*pfad*scheduler
org.quartz.dataSource.myDS.user = name
org.quartz.dataSource.myDS.password = pw
org.quartz.dataSource.myDS.maxConnections = 20
Wobei der Pfad dann irgendwie relativ sein müsste oder halt wie aus dem Java Code heraus ganz ohne Pfadangabe...
Das wäre doch eigentlich die Alternative 1, die hier beschrieben wird Quartz Scheduler - Documentation - Configuration - DataSources

Alternative 2 wäre doch das, was du beschreibst oder? Und das müsste dann auf diesem Weg geschehen? -> The Apache Tomcat 5.5 Servlet/JSP Container - JNDI Resources HOW-TO

Edit: Die Coding-Geschichte (in Java) muss ich doch nur machen, wenn ich aus dem einer Klasse heraus eine DB-Verbindung benötige oder? Quartz löst das ja eigentlich ohne dass (ich es sehen kann) ich irgendwas mache (außer den Scheduler aus der Factory zu holen und zu starten).
 
Zuletzt bearbeitet:

turtle

Top Contributor
Ja, das stimmt. wird der Pfad angegeben sollte das klappen.

Und auch Dein Hinweis mit Alternative-2 stimmt. Durch die Bereitstellung einer JNDI-Datasource hast Du allerdings nirgends in Deinen Dateien mit Pfaden zu kämpfen. Dies ist dann Sache desjenigen der die Applikation im Tomcat deployed. Ist natürlich auch eine Frage wie professionell Deine Applikation daher kommen soll. Und wieder ja, der Link zur Apache-Seite beschreibt gut, wie JNDI-Datasource einzurichten ist. Und auch stimmt es, dass Du im Code nichts machen musst, aber man Quartz halt auch über eine JNDI-Konfiguration beibringen wie auf die Datenbank zuzugreifen ist. Und da verlagerst Du das Problem des Datenbank-Aufbaus weg von Deiner Applikation hin zu Tomcat und JNDI.

Mich wundert aber die Exception. Dein System macht da einen Leseversuch, den es nicht darf. Sieht für mich so aus, als ob Derby mit Security-Manager gestartet wurde. richtig? Ebenso möchte Quartz
org.quartz.properties lesen und darf das auch nicht. Da steht aber nichts von Derby dabei und ich vermute daher, dass der Tomcat mit einem Security-Manager läuft.
Wenn dem so ist, solltest Du eine Policy-Datei für Deine Applikation erzeugen, in der alle Operationen freigegeben sind, die Dein Programm benötigt.
Üblicherweise wird in Eclipse unter Installed JRE ein Security-Manager unter den default VM Arguments eingestellt.
Eine Policy-Datei ist eine normale ASCII-Datei ungefähr folgenden Formats
Java:
grant codeBase "file:<Pfad zu Deiner WebApplikation>" {
 permission java.security.AllPermission; // Erlaube alles oder
 permission java.io.FilePermission "C:\\Users\\JavaKaffee\\workspace_java\\MonitoringServer\\scheduler", "read";
 permission java.util.PropertyPermission "quartz.properties", "read";
 // Weitere Permissions falls notwendig
};
 
Zuletzt bearbeitet:

JavaKaffee

Mitglied
Wo muss die Policy denn dann hin? Ebenfalls zu den properties in den src-Folder? Und muss ich die wie in der Java-Insel angegeben erst irgendwo im Security-Manager vermerken?

Ulkig ist dabei auch was:
Ich habe als ich den Thread eröffnet habe und die Diskussion um den SecurityManager aufkam in der Eclipse-Oberfläche, dort wo man den internen Tomcat konfigurieren kann (Doppelklick auf den Tomcat links im Explorer von Eclipse) einen Haken gefunden wo steht "Enable Security" und vermutet, dass der wohl für das Übel zuständig ist. Als ich den deaktiviert habe, hat sich aber nichts geändert.

Selbiges habe ich jetzt mal wieder ausprobiert und siehe da, keine PermissionException mehr. Hätte ich ansonsten manuell in den VM Arguments des Tomcat bei
Code:
-Djava.security.manager -Djava.security.policy="C:\Users\JavaKaffee\workspace_java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\catalina.policy" -Dwtp.configured.security=true
letzteres auf false setzen müssen?

Btw. hab ich grad auch die Stelle gefunden, wo ich hätte "Add Webmodule..." (bzw. external) wählen können, aber da tauchte das Projekt ja wie gesagt auch schon auf. Der Reiter Modules war mir vorher bloß nicht aufgefallen. Ich kämpf dann nochmal etwas mit JNDI rum und schau mal, ob ich damit zurande komm. Meld mich dann wieder mit dem Ergebnis (gestern gings auf Anhieb nicht gut, aber ich machs nochmal Schritt für Schritt).

Edit:
Während der Konfiguration von JNDI in Quartz bin ich mir jetzt nicht ganz sicher, was ich eigentlich brauche an Parametern. Quartz bietet mir folgendes an ->
Code:
org.quartz.dataSource.myOtherDS.jndiURL=jdbc/myDataSource
org.quartz.dataSource.myOtherDS.java.naming.factory.initial=com.evermind.server.rmi.RMIInitialContextFactory
org.quartz.dataSource.myOtherDS.java.naming.provider.url=ormi://localhost
org.quartz.dataSource.myOtherDS.java.naming.security.principal=admin
org.quartz.dataSource.myOtherDS.java.naming.security.credentials=123
wobei nur der erste Eintrag required ist. Logischerweise wird dort ja der Eintrag vermerkt, welcher auch im Context des Tomcat festgelegt wurde. Aber brauche ich auch einen der anderen Einträge? Bspw. die URL?

Und sollte die DB eigentlich im "root"-Verzeichnis des Projekts (MonitoringServer) liegen oder im content-Folger in meinem Projekt?
 
Zuletzt bearbeitet:

turtle

Top Contributor
-Djava.security.manager -Djava.security.policy=...
Das Policy-File sollte im Server in Eclipse eigentlich sichtbar sein (siehe Screenshot), Dein Pfad sieht zwar "komisch" aus, aber wenn es jetzt ohne SecurityException läuft...

Viel Glück mit JNDI, sollte eigentlich nicht ganz so schwer sein. Du kannst das hoffentlich mit einem kleinen Testservlet verifzieren, dass der Verbindungsaufbau klappt:
Java:
public class JNDIServlet extends HttpServlet {
	public void doGet(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		Context initContext = new InitialContext();
		Context envContext = (Context) initContext.lookup("java:/comp/env");
		DataSource ds = (DataSource) envContext.lookup("jdbc/<DeinName>");
		Connection conn = ds.getConnection();
		System.out.println("Connection:"+conn);
	}
}
 

Anhänge

  • server.PNG
    server.PNG
    10,1 KB · Aufrufe: 26
Zuletzt bearbeitet:

JavaKaffee

Mitglied
Klappte nicht (trotz der eigentlich richtigen Konfiguration, abgesehen von der URL), da ich ja auch eig net wusste, welche URL ich jetzt angeben muss in der server.xml
Ich kam dann auf den ausgefuchsten Ansatz einfach mal nur jdbc:derby:scheduler zu benutzen (wie so oft), fuchsigerweise habe ich einfach mal meine DB gebacked in irgendnem Ordner (sicherheitshalber) und dann create=true als parameter an die URL angehangen. Danach habe ich die Windowssuche bemüht und herausgefunden, von welchem Pfad er ausgeht (hat mich erschrocken). Die neue DB landete im "Installations"verzeichnis von eclipse (bei mir C:/Eclipse). Wo hat die zuständige Instanz denn diese ausgebuffte Information her, dass so durchzuführen?

Edit:
Falls es ne Lösung dafür gibt, hätte ich die gerne. Allerdings haben meine Kollegen als ich es ihnen grad gezeigt hab auch darauf hingewiesen, dass in der server.xml dann ruhig erstmal der absolue Pfad stehen darf, der kann ja dann angepasst werden, das probier ich dann mal jetzt!

P.S.: Absoluter Pfad funzt dann mit dem Servlet, ich versuch dann mal die properties noch anzupassen und dann sollte das ja schon rennen.

-> Also JNDIServlet JA, Quartz NÖ
Code:
76   ERROR [main] org.quartz.utils.JNDIConnectionProvider     - Error looking up datasource: Name jdbc is not bound in this Context
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
	at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
	at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
	at javax.naming.InitialContext.lookup(InitialContext.java:392)
	at org.quartz.utils.JNDIConnectionProvider.init(JNDIConnectionProvider.java:124)
	at org.quartz.utils.JNDIConnectionProvider.<init>(JNDIConnectionProvider.java:102)
	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:960)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1465)
	at com.cron.CronScheduler.<init>(CronScheduler.java:13)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
76 [main] ERROR org.quartz.utils.JNDIConnectionProvider  - Error looking up datasource: Name jdbc is not bound in this Context
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
	at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
	at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
	at javax.naming.InitialContext.lookup(InitialContext.java:392)
	at org.quartz.utils.JNDIConnectionProvider.init(JNDIConnectionProvider.java:124)
	at org.quartz.utils.JNDIConnectionProvider.<init>(JNDIConnectionProvider.java:102)
	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:960)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1465)
	at com.cron.CronScheduler.<init>(CronScheduler.java:13)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
120  INFO  [main] org.quartz.core.SchedulerSignalerImpl     - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
120 [main] INFO org.quartz.core.SchedulerSignalerImpl  - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
120  INFO  [main]       org.quartz.core.QuartzScheduler     - Quartz Scheduler v.1.8.5 created.
120 [main] INFO org.quartz.core.QuartzScheduler  - Quartz Scheduler v.1.8.5 created.
122  INFO  [main] org.quartz.impl.jdbcjobstore.JobStoreTX     - Using thread monitor-based data access locking (synchronization).
122 [main] INFO org.quartz.impl.jdbcjobstore.JobStoreTX  - Using thread monitor-based data access locking (synchronization).
124  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' is desired by: main
124 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' is desired by: main
125  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' is being obtained: main
125 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' is being obtained: main
125  DEBUG [main] org.quartz.impl.jdbcjobstore.SimpleSemaphore     - Lock 'TRIGGER_ACCESS' given to: main
125 [main] DEBUG org.quartz.impl.jdbcjobstore.SimpleSemaphore  - Lock 'TRIGGER_ACCESS' given to: main
126  INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1312362105869 shutting down.
126 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1312362105869 shutting down.
126  INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1312362105869 paused.
126 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1312362105869 paused.
126  INFO  [main]       org.quartz.core.QuartzScheduler     - Scheduler MonitoringScheduler_$_JavaKaffee-PC1312362105869 shutdown complete.
126 [main] INFO org.quartz.core.QuartzScheduler  - Scheduler MonitoringScheduler_$_JavaKaffee-PC1312362105869 shutdown complete.
org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': java.sql.SQLException: Could not retrieve datasource via JNDI url 'jdbc/DerbyDB' javax.naming.NameNotFoundException: Name jdbc is not bound in this Context [See nested exception: java.sql.SQLException: Could not retrieve datasource via JNDI url 'jdbc/DerbyDB' javax.naming.NameNotFoundException: Name jdbc is not bound in this Context]]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:612)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:56)
	at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1274)
	at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1465)
	at com.cron.CronScheduler.<init>(CronScheduler.java:13)
	at com.cron.InitializeServlet.init(InitializeServlet.java:27)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': java.sql.SQLException: Could not retrieve datasource via JNDI url 'jdbc/DerbyDB' javax.naming.NameNotFoundException: Name jdbc is not bound in this Context [See nested exception: java.sql.SQLException: Could not retrieve datasource via JNDI url 'jdbc/DerbyDB' javax.naming.NameNotFoundException: Name jdbc is not bound in this Context]
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:695)
	at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:69)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3765)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3730)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanVolatileTriggerAndJobs(JobStoreSupport.java:752)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:610)
	... 23 more
Caused by: java.sql.SQLException: Could not retrieve datasource via JNDI url 'jdbc/DerbyDB' javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
	at org.quartz.utils.JNDIConnectionProvider.getConnection(JNDIConnectionProvider.java:163)
	at org.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:109)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:692)
	... 28 more
 
Zuletzt bearbeitet:

turtle

Top Contributor
org.quartz.jobStore.dataSource = NAME
org.quartz.dataSource.NAME.jndiURL=java:comp/env/jdbc/Scheduler
 
Zuletzt bearbeitet:

JavaKaffee

Mitglied
Ich hatte sowas ähnliches vorhin schonmal gelesen, warum ich das als einziges noch nicht ausprobiert hatte? Keine Ahnung, aber es war genau das, was noch fehlte. Musste nur noch die JNDIUrl anpassen und go.
Datenbank per JNDI? Rennt!

Ich mach dann jetzt Mittagspause und bedanke mich abermals. Ich lass den Thread natürlich noch ein wenig offen, aber akut bin ich erstmal glücklich :)
 

turtle

Top Contributor
Mein Lieblinsthread endet ;-(

Ich bin betrübt, aber auch froh, dass es nun klappt. Freut mich Dir helfen zu können.
 

JavaKaffee

Mitglied
Eigentlich gehörts nicht mehr in diesen Thread, nu gehts eher um Netzwerkprogrammierung^^ Aber ich glaub das is schnell abgehandelt:
Ich will n Ping absetzen (sprich Echo) oder meinetwegen auch alternativ überprüfen, ob ein MySQL (hat ja doch noch mit Datenbanken zu tun xD) Server oben ist. Wenn ich allerdings (egal wohin) den Socket öffne auf Port 7 und bspw. mal google "anpinge", dann kommt immer connection refused, auch beim localhost.
Muss ich für den Socket noch nen Server starten vorher oder kann ich das auch ganz anders auf einfachem wege lösen?
 

turtle

Top Contributor
Per Java kann man gar nicht so einfach testen, ob ein Rechner läuft (anpingen). Das gibt die Socket-API nicht her, aber ich habe mal eine kleine Klasse geschrieben, die das macht:
Java:
public class Ping {

	public static void main(String[] args) {
        boolean alive = ping(args[0]);
        System.out.print("Host \""+args[0]+"\" ");
        if (alive)
        	System.out.println("is alive");
        else
        	System.out.println("is NOT alive");      
 	}

	private static boolean ping(String host) {
		 try  
        {  
            Runtime r = Runtime.getRuntime();  
            String cmd[] = { "ping" , host };  
            Process p = r.exec( cmd );   
            p.waitFor();
            int exitValue = p.exitValue();  
    		return exitValue == 0;
        }  
         catch(Exception e)  
         {  
              e.printStackTrace(); 
              return false;
         }
	}
}
 
J

JohannisderKaeufer

Gast
In der Tat ist es mit Java nicht so einfach zu überprüfen ob ein Server läuft.

InetAddress (Java 2 Platform SE 5.0)

Damit kann man das ganze testen. Es ist aber zu beachten das unter linux dabei der Spruch gilt
[DUKE]Root tut gut![/DUKE]
Ansonsten läuft das ganze in einen Timeout.

Aber vielleicht reicht das ja schon.
 

JavaKaffee

Mitglied
@turtle:
Funzen tut das, werd ich mal ausprobieren.

@JohannisderKaeufer:
Hatte ich auch schonmal getestet, werd ich aber nochmal tun und dann gucken, für was ich mich entscheide. Welche Vor-/Nachteile haben die beiden Alternativen?

Edit: FAIL meinerseits. Wenn ich den MySQL-Server "anpingen" wollen würde, müsste ich es ja auf dem MySQL-spezifischen Port tun. Da Ping aber nicht auf Ports geht, muss ich wohl auf telnet umsteigen, um die Erreichbarkeit zu checken.
Überlege grad aber noch... ich kann doch theoretisch einfach ne Verbindung zur DB aufbauen und wenn se klappt is das Ding doch erreichbar?
 
Zuletzt bearbeitet:
J

JohannisderKaeufer

Gast
Auf welchem OS Entwickelst du?

Auf welchem OS läuft die Anwendung später?


Nimm ein Windows Terminal und ping google an!

Nimm ein Linux Terminal und ping google an!

Windows macht 4 Abfragen und beendet dann den Prozess. Unter Linux läuft das in einer Endlosschleife.

[JAVA=18]p.waitFor();[/code]

wartet auf einem Linux Rechner ewig, da ja immer wieder neu gepingt wird. Gibt man dann den Parameter -c (Count) mit, versteht das die Windowsversion von ping wiederum nicht.

Kurzum die Plattformunabhängigkeit leidet.
ping != ping

Wenn das nicht stört und es auf dem Zielsystem keine Probleme gibt, kann man sicher beides verwenden.
 

JavaKaffee

Mitglied
Bin wie beschrieben schon vom Ping abgewendet, da ich ja wie gesagt keinen Port anpingen kann, müsste ich bei nem MySQL-Server aber ja. Da telnet nicht unbedingt sinnvoller ist, als gleich ne Verbindung zur DB aufzubauen, habe ich mich jetzt dafür entschieden und das läuft auch. Sprich einfach per Java ne DB-Verbindung mit JDBC gebastelt und bei erfolgreicher Verbindung entsprechendes vermerkt und bei Misserfolg genauso. Mehr brauch es grad nicht können an der Stelle.
 

JavaKaffee

Mitglied
Hey Leute,

nochmal ein kleines JNDI-Problem: Wir haben das Projekt per SVN bei meiner Kollegin eingespielt. Wir haben in der server.xml den Pfad für die DB an ihre Umgebung angepasst. Sieht auch alles gut aus nur die JNDI Verbindung klappt bei ihr mit folgender Exception (Ausschnitt):

Code:
Caused by: java.sql.SQLException: Could not retrieve datasource via JNDI url 'java:comp/env/jdbc/DerbyDB' org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'org.apache.derby.jdbc.EmbeddedDriver' for connect URL 'jdbcerby:C:/Programme/Projekte/MonitoringServer2/scheduler'

Woran hängts nun?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Webanwendung mit Datenbank Grundsatzfrage Datenbankprogrammierung 4
Maxim6394 EclipseLink + SQLite | Unable to acquire a connection from driver [null] Datenbankprogrammierung 6
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
S Oracle DB-Connection in .jar file ändern Datenbankprogrammierung 11
yakazuqi MySQL MySQL Connection reset Datenbankprogrammierung 7
K Glassfish 4.1.1 Connection Pool u. Resource Ref Datenbankprogrammierung 20
OnDemand Hikari Pool Connection Validation Datenbankprogrammierung 18
Dimax MySQL Methodenaufruf mit Connection Übergabe Datenbankprogrammierung 8
D MySQL Connection richtig herstellen. Wie ? Datenbankprogrammierung 7
D Multiple Connection mit MySQL Datenbankprogrammierung 4
S Connection Pool Hikari Datenbankprogrammierung 7
P MySQL Connection Global Datenbankprogrammierung 13
J Connection Datenbankprogrammierung 1
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
S New Connection Wizard / NetBeans Datenbankprogrammierung 0
P Frage zu Connection.close() Datenbankprogrammierung 4
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
M Connection erstellen Datenbankprogrammierung 1
F Monitoring DB Connection Pool Datenbankprogrammierung 3
H JDBCODBC - Connection-Objekt Datenbankprogrammierung 3
E MySQL SQL - wann connection schließen Datenbankprogrammierung 2
R HSQLDB Connection refused Datenbankprogrammierung 2
B JDBC Connection Fehler Datenbankprogrammierung 8
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
reibi Derby/JavaDB Connection refused Datenbankprogrammierung 14
S Ressourcenverbrauch Connection Open/Close Datenbankprogrammierung 11
W MySQL-Connection-Objekt übergeben Datenbankprogrammierung 2
N SQL-Connection Datenbankprogrammierung 3
B MySQL Datenbank Connection als String zurückgeben Datenbankprogrammierung 7
M Connection Pooling Datenbankprogrammierung 7
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4
K Connection - möglich & nicht möglich Datenbankprogrammierung 2
T Datenbank connection mit Servlet Datenbankprogrammierung 4
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
H H2 H2-Connection bei WebStart Datenbankprogrammierung 6
ruutaiokwu jdbc connection als singleton Datenbankprogrammierung 11
S Wie überprüfe ich ob die Instanz einer Connection gerade werwendet wird? Datenbankprogrammierung 4
X Connection schließen oder speichern? Performance Frage Datenbankprogrammierung 7
C Derby/JavaDB JavaDB: Keine Connection Datenbankprogrammierung 7
T Pooled Connection und Connection Pool Datenbankprogrammierung 2
S Java Connection to MySQL Datenbank FunPic Datenbankprogrammierung 4
Q java.lang.NullPointerException connection = null Datenbankprogrammierung 13
N Connection bleibt null Datenbankprogrammierung 7
H DB-Connection zu MySQL Datenbankprogrammierung 12
D Wie bekommt man die JDBC connection zum laufen?(Eclipse) Datenbankprogrammierung 16
T MySQL ResultSet zurückgeben nachdem Connection geschlossen wurde? Datenbankprogrammierung 3
B db2 jdbc connection Datenbankprogrammierung 4
G MySQL Connection Problem Datenbankprogrammierung 3
R sql.Connection vs. mysql.Connection Datenbankprogrammierung 3
R Connection Pooling - Tote Verbindungen Datenbankprogrammierung 5
S Connection Pool Datenbankprogrammierung 23
P JPA Connection dynamisch hinzufügen Datenbankprogrammierung 2
S JDBC connection open Datenbankprogrammierung 3
D MySQL Verständnisproblem mit globalen Variablen (Connection) Datenbankprogrammierung 7
F Connection refused: connect Bei Verbindungsherstellung zu MySQL Datenbank Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
R Connection nur als root Datenbankprogrammierung 3
N Connection kann nicht geschlossen werden!? Datenbankprogrammierung 4
S JPA Hibernate: "The user must supply a jdbc connection" Datenbankprogrammierung 4
F MySQL - Connection JDBC-Driver Problem Datenbankprogrammierung 4
E MSSQL-Server connection aufbau sehr langsam Datenbankprogrammierung 2
S Zuviele DB Connection Datenbankprogrammierung 4
A Connection Variable in anderer Klasse verwenden -> statement Datenbankprogrammierung 2
S Connection String MS Access mit Systemdatenbank / Arbeitsgruppeninformationsdatei Datenbankprogrammierung 4
R DB-Connection, aber wie? Datenbankprogrammierung 2
F Java SQL Connection mit Rollback Datenbankprogrammierung 2
P DB- Connection lösen Datenbankprogrammierung 7
padde479 Connection String Oracle Datenbankprogrammierung 5
W JDBC Connection isValid()? Datenbankprogrammierung 4
G Frage zu connection? Datenbankprogrammierung 9
G allgemeine JDBC-Connection Frage Datenbankprogrammierung 2
H Wie kann ich eine Datenbank Connection aus XML-Datei lesen! Datenbankprogrammierung 2
J jdbc Oracle Connection refused Datenbankprogrammierung 6
D Probleme mit mysql-Connection Datenbankprogrammierung 10
K Wo "Connection" Object erstellen? Datenbankprogrammierung 7
N Kleine Frage zu Connection Pooling mit DataSource Datenbankprogrammierung 2
M Hilfe - keine Connection zur DB Datenbankprogrammierung 4
G Connection zu einer Oracle DB erstellen Datenbankprogrammierung 8
K Oracle XE Connection Problem Datenbankprogrammierung 2
S Connection/Statement/ResultSet auf einmal geschlossen Datenbankprogrammierung 8
C Resultset nach connection close weiterreichen Datenbankprogrammierung 5
G SQL Server Connection Datenbankprogrammierung 12
K "Connection timed out: connect" bei MySQL-Verbindu Datenbankprogrammierung 10
R Warum ist meine Connection null? Datenbankprogrammierung 6
B Connection Pools Datenbankprogrammierung 3
U Connection läuft nicht als jar Datenbankprogrammierung 6
R Interessantes Problem mit Connection-Pool. Datenbankprogrammierung 2
C Statement/Connection SQLWarning Datenbankprogrammierung 4
P Connection problems Datenbankprogrammierung 15
J Keine Connection zur MySQL Db Datenbankprogrammierung 6
K db connection wann schließen Datenbankprogrammierung 4
W Problem bei Connection mit SQLServer-Datenbanke mittels Java Datenbankprogrammierung 2
S Viele Klassen sollen eine Connection benutzen Datenbankprogrammierung 3
K Connection error Datenbankprogrammierung 18
G SQLException: No operations allowed after connection closed Datenbankprogrammierung 2
T problem mit mysql connection Datenbankprogrammierung 6
H Connection Pool + Tomcat + Oracle10g Datenbankprogrammierung 7
T JDBC Connection refused Problem Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben