Author: andygumbrecht
Date: Thu Aug 2 15:46:18 2012
New Revision: 1368558
URL: http://svn.apache.org/viewvc?rev=1368558&view=rev
Log:
Fix DbcpDataSource and DbcpManagedDataSource- Were calling
DataSourceHelper.setUrl on self rather than the DataSource - This would lead to
errors on redeployment. Also rename to prevent clash with underlaying protected
variable.
EjbTimerServiceImpl check for shutdown.
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
Thu Aug 2 15:46:18 2012
@@ -192,7 +192,6 @@ public class EjbTimerServiceImpl impleme
} catch (SchedulerException e) {
throw new OpenEJBRuntimeException("Unable to shutdown scheduler",
e);
}
-
}
@Override
@@ -229,21 +228,35 @@ public class EjbTimerServiceImpl impleme
* @param timerData the timer to schedule
*/
public void schedule(TimerData timerData) {
- if (scheduler == null) throw new IllegalStateException("scheduler is
configured properly");
+ if (scheduler == null) throw new IllegalStateException("Scheduler is
not configured properly");
timerData.setScheduler(scheduler);
- Trigger trigger = timerData.getTrigger();
+ final Trigger trigger = timerData.getTrigger();
+
+ if (null == trigger) {
+
+ try {
+ if (!scheduler.isShutdown()) {
+ log.warning("Failed to schedule: " + timerData.getInfo());
+ }
+ } catch (SchedulerException e) {
+ //Ignore
+ }
+ }
+
if (trigger instanceof AbstractTrigger) { // is the case
AbstractTrigger<?> atrigger = (AbstractTrigger<?>) trigger;
atrigger.setJobName(OPENEJB_TIMEOUT_JOB_NAME);
atrigger.setJobGroup(OPENEJB_TIMEOUT_JOB_GROUP_NAME);
} else {
- throw new OpenEJBRuntimeException("the trigger was not an
AbstractTrigger - it shouldn't be possible");
+ throw new OpenEJBRuntimeException("the trigger was not an
AbstractTrigger - Should not be possible: " + trigger);
}
+
JobDataMap triggerDataMap = trigger.getJobDataMap();
triggerDataMap.put(EjbTimeoutJob.EJB_TIMERS_SERVICE, this);
triggerDataMap.put(EjbTimeoutJob.TIMER_DATA, timerData);
+
try {
scheduler.scheduleJob(trigger);
} catch (Exception e) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java
Thu Aug 2 15:46:18 2012
@@ -186,8 +186,8 @@ public class BasicDataSource extends org
final ReentrantLock l = lock;
l.lock();
try {
- if (dataSource != null) {
- return dataSource;
+ if (super.dataSource != null) {
+ return super.dataSource;
}
// check password codec if available
@@ -207,13 +207,17 @@ public class BasicDataSource extends org
final String currentUrl = getUrl();
final String newUrl = helper.updatedUrl(currentUrl);
if (!currentUrl.equals(newUrl)) {
- setUrl(newUrl);
- }
+ super.setUrl(newUrl);
+ }
}
// create the data source
if (helper == null || !helper.enableUserDirHack()) {
- return super.createDataSource();
+ try {
+ return super.createDataSource();
+ } catch (Throwable e) {
+ throw new SQLException("Failed to create DataSource", e);
+ }
} else {
// wrap super call with code that sets user.dir to
openejb.base and then resets it
Properties systemProperties = System.getProperties();
@@ -222,7 +226,11 @@ public class BasicDataSource extends org
try {
File base = SystemInstance.get().getBase().getDirectory();
systemProperties.setProperty("user.dir",
base.getAbsolutePath());
- return super.createDataSource();
+ try {
+ return super.createDataSource();
+ } catch (Throwable e) {
+ throw new SQLException("Failed to create DataSource",
e);
+ }
} finally {
systemProperties.setProperty("user.dir", userDir);
}
@@ -262,7 +270,7 @@ public class BasicDataSource extends org
try {
if (null == this.logger) {
- this.logger = (Logger)
Reflections.invokeByReflection(dataSource, "getParentLogger", new Class<?>[0],
null);
+ this.logger = (Logger)
Reflections.invokeByReflection(super.dataSource, "getParentLogger", new
Class<?>[0], null);
}
return this.logger;
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
Thu Aug 2 15:46:18 2012
@@ -180,8 +180,8 @@ public class BasicManagedDataSource exte
final ReentrantLock l = lock;
l.lock();
try {
- if (dataSource != null) {
- return dataSource;
+ if (super.dataSource != null) {
+ return super.dataSource;
}
// check password codec if available
@@ -201,14 +201,18 @@ public class BasicManagedDataSource exte
final String currentUrl = getUrl();
final String newUrl = helper.updatedUrl(currentUrl);
if (!currentUrl.equals(newUrl)) {
- setUrl(newUrl);
- }
+ super.setUrl(newUrl);
+ }
}
wrapTransactionManager();
// create the data source
if (helper == null || !helper.enableUserDirHack()) {
- return super.createDataSource();
+ try {
+ return super.createDataSource();
+ } catch (Throwable e) {
+ throw new SQLException("Failed to create DataSource", e);
+ }
} else {
// wrap super call with code that sets user.dir to
openejb.base and then resets it
Properties systemProperties = System.getProperties();
@@ -217,7 +221,11 @@ public class BasicManagedDataSource exte
try {
File base = SystemInstance.get().getBase().getDirectory();
systemProperties.setProperty("user.dir",
base.getAbsolutePath());
- return super.createDataSource();
+ try {
+ return super.createDataSource();
+ } catch (Throwable e) {
+ throw new SQLException("Failed to create DataSource",
e);
+ }
} finally {
systemProperties.setProperty("user.dir", userDir);
}
@@ -261,7 +269,7 @@ public class BasicManagedDataSource exte
try {
if (null == this.logger) {
- this.logger = (Logger)
DataSource.class.getDeclaredMethod("getParentLogger").invoke(dataSource);
+ this.logger = (Logger)
DataSource.class.getDeclaredMethod("getParentLogger").invoke(super.dataSource);
}
return this.logger;
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java
Thu Aug 2 15:46:18 2012
@@ -25,22 +25,22 @@ import java.sql.SQLException;
public class DbcpDataSource extends BasicDataSource {
- private final DataSource dataSource;
+ protected final DataSource ds;
public DbcpDataSource(final String name, final DataSource dataSource) {
super(name);
- this.dataSource = dataSource;
+ this.ds = dataSource;
}
@Override
protected ConnectionFactory createConnectionFactory() throws SQLException {
- return new DataSourceConnectionFactory(dataSource, username, password);
+ return new DataSourceConnectionFactory(this.ds, username, password);
}
@Override
public void setJdbcUrl(String url) {
try {
- DataSourceHelper.setUrl(this, url);
+ DataSourceHelper.setUrl(this.ds, url);
} catch (Throwable e1) {
super.setUrl(url);
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java
Thu Aug 2 15:46:18 2012
@@ -31,17 +31,17 @@ import java.sql.SQLException;
public class DbcpManagedDataSource extends BasicManagedDataSource {
- private final DataSource dataSource;
+ private final DataSource ds;
public DbcpManagedDataSource(final String name, final DataSource
dataSource) {
super(name);
- this.dataSource = dataSource;
+ this.ds = dataSource;
}
@Override
public void setJdbcUrl(String url) {
try {
- DataSourceHelper.setUrl(this, url);
+ DataSourceHelper.setUrl(this.ds, url);
} catch (Throwable e1) {
super.setUrl(url);
}
@@ -50,10 +50,10 @@ public class DbcpManagedDataSource exten
@Override
protected ConnectionFactory createConnectionFactory() throws SQLException {
- if (dataSource instanceof XADataSource) {
+ if (this.ds instanceof XADataSource) {
// Create the XAConectionFactory using the XA data source
- XADataSource xaDataSourceInstance = (XADataSource) dataSource;
+ XADataSource xaDataSourceInstance = (XADataSource) this.ds;
XAConnectionFactory xaConnectionFactory = new
DataSourceXAConnectionFactory(getTransactionManager(), xaDataSourceInstance,
username, password);
setTransactionRegistry(xaConnectionFactory.getTransactionRegistry());
return xaConnectionFactory;
@@ -61,7 +61,7 @@ public class DbcpManagedDataSource exten
} else {
// If xa data source is not specified a DriverConnectionFactory is
created and wrapped with a LocalXAConnectionFactory
- ConnectionFactory connectionFactory = new
DataSourceConnectionFactory(dataSource, username, password);
+ ConnectionFactory connectionFactory = new
DataSourceConnectionFactory(this.ds, username, password);
XAConnectionFactory xaConnectionFactory = new
LocalXAConnectionFactory(getTransactionManager(), connectionFactory);
setTransactionRegistry(xaConnectionFactory.getTransactionRegistry());
return xaConnectionFactory;