You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2012/02/24 17:13:45 UTC
svn commit: r1293319 - in /openejb/trunk/openejb:
container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/
container/openejb-core/src/main/java/org/apache/openejb/config/
container/openejb-core/src/main/java/org/apache/openejb/core/ti...
Author: andygumbrecht
Date: Fri Feb 24 16:13:44 2012
New Revision: 1293319
URL: http://svn.apache.org/viewvc?rev=1293319&view=rev
Log:
Added finals, overrides and cleanup.
Fixed several logging crashes on debug level due to empty {}.
ServicePool reduce logging on IO error and force Runnable.
SocketConnectionFactory only needs to check keepAliveStyle once.
KeepAliveServer remove logging on socket issues and cleanup.
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
openejb/trunk/openejb/examples/cdi-events/src/test/java/org/superbiz/cdi/events/Observer.java
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java
openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java
openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/KeepAliveServer.java
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServicePool.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java Fri Feb 24 16:13:44 2012
@@ -138,7 +138,7 @@ public class ReloadableEntityManagerFact
throw new OpenEJBException("can't register the mbean for the entity manager factory " + getPUname(), e);
} catch (NoClassDefFoundError ncdfe) {
objectName = null;
- LOGGER.error("can't register the mbean for the entity manager factory {}", getPUname());
+ LOGGER.error("can't register the mbean for the entity manager factory {0}", getPUname());
}
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java Fri Feb 24 16:13:44 2012
@@ -131,7 +131,7 @@ public class MBeanDeployer implements Dy
String listProp = SystemInstance.get().getOptions().get(OPENEJB_MBEAN_CLASSES_PROPERTY, (String) null);
if (OPENEJB_MBEAN_FORCE_FINDER.equals(listProp)) { // the classfinder costs too much to be used by default
- logger.debug("loading mbeans using an annotation finder, you should maybe adjust {} system property",
+ logger.debug("loading mbeans using an annotation finder, you should maybe adjust {0} system property",
OPENEJB_MBEAN_CLASSES_PROPERTY);
List<Class<?>> list = Collections.emptyList();
try {
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java Fri Feb 24 16:13:44 2012
@@ -17,11 +17,6 @@
package org.apache.openejb.core.timer;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ThreadPoolExecutor;
-
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.DaemonThreadFactory;
import org.apache.openejb.util.LogCategory;
@@ -29,6 +24,13 @@ import org.apache.openejb.util.Logger;
import org.quartz.SchedulerConfigException;
import org.quartz.spi.ThreadPool;
+import java.util.concurrent.Executor;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.RejectedExecutionHandler;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
/**
* @version $Rev$ $Date$
*/
@@ -44,28 +46,49 @@ public class DefaultTimerThreadPoolAdapt
private final Object threadAvailableLock = new Object();
- private boolean threadPoolExecutorUsed;
+ private final boolean threadPoolExecutorUsed;
public DefaultTimerThreadPoolAdapter() {
- executor = SystemInstance.get().getComponent(Executor.class);
- if (executor == null) {
- executor = Executors.newFixedThreadPool(10, new DaemonThreadFactory(DefaultTimerThreadPoolAdapter.class));
- SystemInstance.get().setComponent(Executor.class, executor);
+ this.executor = SystemInstance.get().getComponent(Executor.class);
+
+ if (this.executor == null) {
+ final int size = Integer.parseInt(SystemInstance.get().getProperty("openejb.timer.pool.size", "2"));
+ this.executor = new ThreadPoolExecutor(2
+ , size
+ , 60L
+ , TimeUnit.SECONDS
+ , new LinkedBlockingQueue<Runnable>(size)
+ , new DaemonThreadFactory(DefaultTimerThreadPoolAdapter.class)
+ , new RejectedExecutionHandler() {
+ @Override
+ public void rejectedExecution(final Runnable r, final ThreadPoolExecutor tpe) {
+ try {
+ tpe.getQueue().put(r);
+ } catch (InterruptedException e) {
+ throw new RejectedExecutionException("Interrupted waiting for executor slot");
+ }
+ }
+ }
+ );
+ ((ThreadPoolExecutor) this.executor).allowCoreThreadTimeOut(true);
+ SystemInstance.get().setComponent(Executor.class, this.executor);
}
- threadPoolExecutorUsed = executor instanceof ThreadPoolExecutor;
- if (!threadPoolExecutorUsed) {
- logger.warning("Unrecognized ThreadPool implementation [" + executor.getClass().getName() + "] is used, EJB Timer service may not work correctly");
+
+ this.threadPoolExecutorUsed = (this.executor instanceof ThreadPoolExecutor);
+
+ if (!this.threadPoolExecutorUsed) {
+ logger.warning("Unrecognized ThreadPool implementation [" + this.executor.getClass().getName() + "] is used, EJB Timer service may not work correctly");
}
}
-// @Override
+ @Override
public int blockForAvailableThreads() {
- if (threadPoolExecutorUsed) {
- ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor;
- synchronized (threadAvailableLock) {
+ if (this.threadPoolExecutorUsed) {
+ final ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) this.executor;
+ synchronized (this.threadAvailableLock) {
while ((threadPoolExecutor.getMaximumPoolSize() - threadPoolExecutor.getActiveCount()) < 1 && !threadPoolExecutor.isShutdown()) {
try {
- threadAvailableLock.wait(500L);
+ this.threadAvailableLock.wait(500L);
} catch (InterruptedException ignore) {
}
}
@@ -76,20 +99,28 @@ public class DefaultTimerThreadPoolAdapt
}
}
-// @Override
- public void setInstanceId(String instanceId) {
+ @Override
+ public void setInstanceId(final String instanceId) {
this.instanceId = instanceId;
}
-// @Override
- public void setInstanceName(String instanceName) {
+ @Override
+ public void setInstanceName(final String instanceName) {
this.instanceName = instanceName;
}
+ public String getInstanceId() {
+ return this.instanceId;
+ }
+
+ public String getInstanceName() {
+ return this.instanceName;
+ }
+
@Override
public int getPoolSize() {
- if (threadPoolExecutorUsed) {
- return ((ThreadPoolExecutor) executor).getPoolSize();
+ if (this.threadPoolExecutorUsed) {
+ return ((ThreadPoolExecutor) this.executor).getPoolSize();
} else {
return 1;
}
@@ -100,18 +131,18 @@ public class DefaultTimerThreadPoolAdapt
}
@Override
- public boolean runInThread(Runnable runnable) {
+ public boolean runInThread(final Runnable runnable) {
try {
- executor.execute(runnable);
+ this.executor.execute(runnable);
return true;
} catch (RejectedExecutionException e) {
- logger.error("Fail to executor timer task", e);
+ logger.error("Failed to execute timer task", e);
return false;
}
}
@Override
- public void shutdown(boolean arg0) {
+ public void shutdown(final boolean arg0) {
//TODO Seems we should never try to shutdown the thread pool, as it is shared in global scope
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java Fri Feb 24 16:13:44 2012
@@ -33,10 +33,10 @@ import org.apache.xbean.finder.UrlSet;
public class URLs {
public static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, URLs.class.getPackage().getName());
- public static File toFile(URL url) {
+ public static File toFile(final URL url) {
if ("jar".equals(url.getProtocol())) {
try {
- String spec = url.getFile();
+ final String spec = url.getFile();
int separator = spec.indexOf('!');
/*
@@ -55,15 +55,15 @@ public class URLs {
}
}
- public static String toFilePath(URL url) {
+ public static String toFilePath(final URL url) {
return toFile(url).getAbsolutePath();
}
- public static UrlSet cullSystemAndOpenEJBJars(UrlSet original) throws IOException {
+ public static UrlSet cullSystemAndOpenEJBJars(final UrlSet original) throws IOException {
return cullSystemJars(cullOpenEJBJars(original));
}
- public static UrlSet cullSystemJars(UrlSet original) throws IOException {
+ public static UrlSet cullSystemJars(final UrlSet original) throws IOException {
UrlSet urls = new UrlSet(original.getUrls());
urls = urls.exclude(ClassLoader.getSystemClassLoader().getParent());
urls = urls.excludeJavaExtDirs();
@@ -71,14 +71,14 @@ public class URLs {
urls = urls.excludeJavaHome();
urls = urls.excludePaths(System.getProperty("sun.boot.class.path", ""));
urls = urls.exclude(".*/JavaVM.framework/.*");
- if (LOGGER.isDebugEnabled()) LOGGER.debug("Cullled {} system urls from set", original.size() - urls.size());
+ if (LOGGER.isDebugEnabled()) LOGGER.debug("Culled {0} system urls from set", original.size() - urls.size());
return urls;
}
- public static UrlSet cullOpenEJBJars(UrlSet original) throws IOException {
+ public static UrlSet cullOpenEJBJars(final UrlSet original) throws IOException {
UrlSet urls = new UrlSet(original.getUrls());
urls = urls.exclude(".*openejb.*");
- if (LOGGER.isDebugEnabled()) LOGGER.debug("Cullled {} OpenEJB urls from set", original.size() - urls.size());
+ if (LOGGER.isDebugEnabled()) LOGGER.debug("Culled {0} OpenEJB urls from set", original.size() - urls.size());
return urls;
}
Modified: openejb/trunk/openejb/examples/cdi-events/src/test/java/org/superbiz/cdi/events/Observer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/cdi-events/src/test/java/org/superbiz/cdi/events/Observer.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/examples/cdi-events/src/test/java/org/superbiz/cdi/events/Observer.java (original)
+++ openejb/trunk/openejb/examples/cdi-events/src/test/java/org/superbiz/cdi/events/Observer.java Fri Feb 24 16:13:44 2012
@@ -33,7 +33,7 @@ public class Observer {
public void saveDate(@Observes Date date) {
dates.add(date);
- LOGGER.info("received date '{}'", date);
+ LOGGER.info("received date '{0}'", date);
}
public List<Date> getDates() {
Modified: openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java (original)
+++ openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java Fri Feb 24 16:13:44 2012
@@ -41,15 +41,16 @@ public class Activator implements Bundle
private OpenEJBInstance openejb;
private Object serviceManager;
- public void start(BundleContext context) throws Exception {
- LOGGER.info("Starting OpenEJB for bundle #{}", context.getBundle().getBundleId());
+ @Override
+ public void start(final BundleContext context) throws Exception {
+ LOGGER.info("Starting OpenEJB for bundle #{0}", context.getBundle().getBundleId());
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
openejb = new OpenEJBInstance();
OpenEJBBundleContextHolder.set(context);
- Properties env = new Properties();
+ final Properties env = new Properties();
// env.setProperty("openejb.embedded", "true");
// default, but to remember that the setting exists
env.setProperty("openejb.loader", "context");
@@ -72,7 +73,7 @@ public class Activator implements Bundle
context.addBundleListener(new Deployer(this));
}
- public synchronized void checkServiceManager(BundleContext context) {
+ public synchronized void checkServiceManager(final BundleContext context) {
if (serviceManager != null) { // already started
return;
}
@@ -100,14 +101,15 @@ public class Activator implements Bundle
}
- private static ServiceTracker getServiceManager(BundleContext context) throws InterruptedException {
- ServiceTracker serviceManagerTracker = new ServiceTracker(context, SERVICE_MANAGER_NAME, null);
+ private static ServiceTracker getServiceManager(final BundleContext context) throws InterruptedException {
+ final ServiceTracker serviceManagerTracker = new ServiceTracker(context, SERVICE_MANAGER_NAME, null);
serviceManagerTracker.open();
serviceManagerTracker.waitForService(TRACKER_TIMEOUT);
return serviceManagerTracker;
}
- public void stop(BundleContext context) throws Exception {
+ @Override
+ public void stop(final BundleContext context) throws Exception {
LOGGER.info("Stopping OpenEJB");
try {
@@ -121,9 +123,10 @@ public class Activator implements Bundle
OpenEJB.destroy();
}
- private static void invoke(Object serviceManager, String name) throws OpenEJBException, InvocationTargetException, IllegalAccessException {
+ private static void invoke(final Object serviceManager, final String name) throws OpenEJBException, InvocationTargetException, IllegalAccessException {
if (serviceManager == null) {
- LOGGER.warn("can't invoke method {} since the service manager is null", name);
+ LOGGER.warn("can't invoke method {0} since the service manager is null", name);
+ return;
}
Class<?> current = serviceManager.getClass();
Modified: openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java (original)
+++ openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java Fri Feb 24 16:13:44 2012
@@ -63,7 +63,7 @@ public class Deployer implements BundleL
private final Activator openejbActivator;
- public Deployer(Activator activator) {
+ public Deployer(final Activator activator) {
openejbActivator = activator;
INSTANCE = this;
}
@@ -72,7 +72,8 @@ public class Deployer implements BundleL
return INSTANCE;
}
- public void bundleChanged(BundleEvent event) {
+ @Override
+ public void bundleChanged(final BundleEvent event) {
openejbActivator.checkServiceManager(OpenEJBBundleContextHolder.get());
switch (event.getType()) {
case BundleEvent.STARTED:
@@ -95,14 +96,14 @@ public class Deployer implements BundleL
} catch (NullPointerException npe) {
// can happen when shutting down an OSGi server
// because of all stop events
- LOGGER.warn("can't undeploy bundle #{}", event.getBundle().getBundleId());
+ LOGGER.warn("can't undeploy bundle #{0}", event.getBundle().getBundleId());
}
deploy(event.getBundle());
break;
}
}
- private void deploy(Bundle bundle) {
+ private void deploy(final Bundle bundle) {
final ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
final ClassLoader osgiCl = new OSGIClassLoader(bundle, OpenEJBBundleContextHolder.get().getBundle());
Thread.currentThread().setContextClassLoader(osgiCl);
@@ -114,7 +115,7 @@ public class Deployer implements BundleL
if (context == null && contexts.containsKey(bundle)) {
context = contexts.get(bundle);
} else if (context == null) {
- LOGGER.warn("can't get bundle context of bundle {}", bundle.getBundleId());
+ LOGGER.warn("can't get bundle context of bundle {0}", bundle.getBundleId());
return;
}
@@ -129,11 +130,11 @@ public class Deployer implements BundleL
}
if (bundleDump == null || !bundleDump.exists()) {
- LOGGER.warn("can't find bundle {}", bundle.getBundleId());
+ LOGGER.warn("can't find bundle {0}", bundle.getBundleId());
return;
}
- LOGGER.info("looking bundle {} in {}", bundle.getBundleId(), bundleDump);
+ LOGGER.info("looking bundle {0} in {1}", bundle.getBundleId(), bundleDump);
final AppModule appModule = new OSGiDeploymentLoader(bundle).load(bundleDump);
LOGGER.info("deploying bundle #" + bundle.getBundleId() + " as an EJBModule");
@@ -162,7 +163,7 @@ public class Deployer implements BundleL
}
}
- private static File findEquinoxJar(BundleContext bundleContext) {
+ private static File findEquinoxJar(final BundleContext bundleContext) {
final File root = bundleContext.getDataFile("").getParentFile();
int idx = 0;
File out;
@@ -175,7 +176,7 @@ public class Deployer implements BundleL
return out;
}
- private static File findFelixJar(BundleContext bundleContext) {
+ private static File findFelixJar(final BundleContext bundleContext) {
final File root = bundleContext.getDataFile("").getParentFile();
int min = 0;
int max = 0;
@@ -194,9 +195,9 @@ public class Deployer implements BundleL
return out;
}
- private void undeploy(Bundle bundle) {
+ private void undeploy(final Bundle bundle) {
if (registrations.containsKey(bundle)) {
- for (ServiceRegistration registration : registrations.get(bundle)) {
+ for (final ServiceRegistration registration : registrations.get(bundle)) {
try {
registration.unregister();
} catch (IllegalStateException ise) {
@@ -208,20 +209,20 @@ public class Deployer implements BundleL
if (paths.containsKey(bundle)) {
try {
- Assembler assembler = SystemInstance.get().getComponent(Assembler.class);
+ final Assembler assembler = SystemInstance.get().getComponent(Assembler.class);
if (assembler != null) { // openejb stopped before bundles when shuttind down the OSGi container
assembler.destroyApplication(paths.remove(bundle));
}
} catch (IllegalStateException ise) {
- LOGGER.error("Can't undeploy bundle #{}", bundle.getBundleId());
+ LOGGER.error("Can't undeploy bundle #{0}", bundle.getBundleId());
} catch (UndeployException e) {
- LOGGER.error("Can't undeploy bundle #{}", bundle.getBundleId(), e);
+ LOGGER.error("Can't undeploy bundle #{0}", bundle.getBundleId(), e);
} catch (NoSuchApplicationException e) {
- LOGGER.error("Can't undeploy non existing bundle #{}", bundle.getBundleId(), e);
+ LOGGER.error("Can't undeploy non existing bundle #{0}", bundle.getBundleId(), e);
}
}
- LOGGER.info("[Deployer] Bundle {} has been stopped", bundle.getSymbolicName());
+ LOGGER.info("[Deployer] Bundle {0} has been stopped", bundle.getSymbolicName());
}
/**
@@ -230,42 +231,42 @@ public class Deployer implements BundleL
* @param bundle the deployed bundle
* @param appContext the appcontext to search EJBs
*/
- private void registerService(Bundle bundle, AppContext appContext) {
+ private void registerService(final Bundle bundle, final AppContext appContext) {
LOGGER.info("Registering remote EJBs as OSGi services");
final BundleContext context = bundle.getBundleContext();
- for (BeanContext beanContext : appContext.getBeanContexts()) {
+ for (final BeanContext beanContext : appContext.getBeanContexts()) {
if (beanContext.getBeanClass().equals(BeanContext.Comp.class) || BeanType.STATEFUL.equals(beanContext.getComponentType())) {
continue;
}
try {
if (beanContext.getBusinessRemoteInterface() != null) {
- LOGGER.info("registering remote bean: {}", beanContext.getEjbName());
+ LOGGER.info("registering remote bean: {0}", beanContext.getEjbName());
registerService(beanContext, context, beanContext.getBusinessRemoteInterfaces());
}
if (beanContext.getBusinessLocalInterface() != null) {
- LOGGER.info("registering local bean: {}", beanContext.getEjbName());
+ LOGGER.info("registering local bean: {0}", beanContext.getEjbName());
registerService(beanContext, context, beanContext.getBusinessLocalInterfaces());
}
if (beanContext.isLocalbean()) {
- LOGGER.info("registering local view bean: {}", beanContext.getEjbName());
+ LOGGER.info("registering local view bean: {0}", beanContext.getEjbName());
registerService(beanContext, context, Arrays.asList(beanContext.getBusinessLocalBeanInterface()));
}
} catch (Exception e) {
- LOGGER.error("[Deployer] can't register: {}", beanContext.getEjbName());
+ LOGGER.error("[Deployer] can't register: {0}", beanContext.getEjbName());
}
}
}
- private void registerService(BeanContext beanContext, BundleContext context, List<Class> interfaces) {
+ private void registerService(final BeanContext beanContext, final BundleContext context, final List<Class> interfaces) {
if (!interfaces.isEmpty()) {
final Class<?>[] itfs = interfaces.toArray(new Class<?>[interfaces.size()]);
try {
final Object service = ProxyEJB.proxy(beanContext, itfs);
registrations.get(context.getBundle()).add(context.registerService(str(itfs), service, new Properties()));
- LOGGER.info("EJB registered: {} for interfaces {}", beanContext.getEjbName(), interfaces);
+ LOGGER.info("EJB registered: {0} for interfaces {1}", beanContext.getEjbName(), interfaces);
} catch (IllegalArgumentException iae) {
- LOGGER.error("can't register: {} for interfaces {}", beanContext.getEjbName(), interfaces);
+ LOGGER.error("can't register: {0} for interfaces {1}", beanContext.getEjbName(), interfaces);
}
}
}
@@ -274,8 +275,8 @@ public class Deployer implements BundleL
return paths.keySet();
}
- private static String[] str(Class<?>[] itfs) {
- String[] itfsStr = new String[itfs.length];
+ private static String[] str(final Class<?>[] itfs) {
+ final String[] itfsStr = new String[itfs.length];
for (int i = 0; i < itfs.length; i++) {
itfsStr[i] = itfs[i].getName();
}
@@ -290,13 +291,14 @@ public class Deployer implements BundleL
private final Bundle backingBundle;
private final Bundle fallbackBundle;
- public OSGIClassLoader(Bundle bundle, Bundle openejbClassloader) {
+ public OSGIClassLoader(final Bundle bundle, final Bundle openejbClassloader) {
super(null);
backingBundle = bundle;
fallbackBundle = openejbClassloader;
}
- protected Class findClass(String name) throws ClassNotFoundException {
+ @Override
+ protected Class findClass(final String name) throws ClassNotFoundException {
try {
return fallbackBundle.loadClass(name);
} catch (Exception ignored) {
@@ -308,13 +310,14 @@ public class Deployer implements BundleL
} catch (ClassNotFoundException cnfe) {
throw new ClassNotFoundException(name + " not found from bundle [" + backingBundle.getSymbolicName() + "]", cnfe);
} catch (NoClassDefFoundError ncdfe) {
- NoClassDefFoundError e = new NoClassDefFoundError(name + " not found from bundle [" + backingBundle + "]");
+ final NoClassDefFoundError e = new NoClassDefFoundError(name + " not found from bundle [" + backingBundle + "]");
e.initCause(ncdfe);
throw e;
}
}
- protected URL findResource(String name) {
+ @Override
+ protected URL findResource(final String name) {
URL url = fallbackBundle.getResource(name);
if (url != null) {
return url;
@@ -326,11 +329,13 @@ public class Deployer implements BundleL
return null;
}
- public Enumeration<URL> getResources(String name) throws IOException {
+ @Override
+ public Enumeration<URL> getResources(final String name) throws IOException {
return findResources(name);
}
- protected Enumeration findResources(String name) throws IOException {
+ @Override
+ protected Enumeration<URL> findResources(final String name) throws IOException {
Enumeration<URL> urls;
try {
urls = fallbackBundle.getResources(name);
@@ -350,12 +355,14 @@ public class Deployer implements BundleL
return new EmptyEnumeration<URL>();
}
- public URL getResource(String name) {
+ @Override
+ public URL getResource(final String name) {
return findResource(name);
}
- protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
- Class clazz = findClass(name);
+ @Override
+ protected Class loadClass(final String name, final boolean resolve) throws ClassNotFoundException {
+ final Class clazz = findClass(name);
if (resolve) {
resolveClass(clazz);
}
@@ -382,18 +389,19 @@ public class Deployer implements BundleL
public class OSGiDeploymentLoader extends DeploymentLoader {
private final Bundle bundle;
- public OSGiDeploymentLoader(Bundle bdl) {
+ public OSGiDeploymentLoader(final Bundle bdl) {
bundle = bdl;
}
- @Override protected ClassLoader getOpenEJBClassLoader(URL url) {
+ @Override
+ protected ClassLoader getOpenEJBClassLoader(final URL url) {
return new OSGIClassLoader(bundle, OpenEJBBundleContextHolder.get().getBundle());
}
}
- private static Class<?> forceLoadClass(String name) {
+ private static Class<?> forceLoadClass(final String name) {
final Bundle[] bundles = OpenEJBBundleContextHolder.get().getBundles();
- for (Bundle bundle : bundles) {
+ for (final Bundle bundle : bundles) {
try {
return bundle.loadClass(name);
} catch (ClassNotFoundException e) {
@@ -403,10 +411,10 @@ public class Deployer implements BundleL
return null;
}
- private static URL forceLoadResource(String name) {
+ private static URL forceLoadResource(final String name) {
final Bundle[] bundles = OpenEJBBundleContextHolder.get().getBundles();
- for (Bundle bundle : bundles) {
- URL url = bundle.getResource(name);
+ for (final Bundle bundle : bundles) {
+ final URL url = bundle.getResource(name);
if (url != null) {
return url;
}
@@ -414,9 +422,9 @@ public class Deployer implements BundleL
return null;
}
- private static Enumeration<URL> forceLoadResources(String name) {
+ private static Enumeration<URL> forceLoadResources(final String name) {
final Bundle[] bundles = OpenEJBBundleContextHolder.get().getBundles();
- for (Bundle bundle : bundles) {
+ for (final Bundle bundle : bundles) {
Enumeration<URL> url = null;
try {
url = bundle.getResources(name);
Modified: openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java (original)
+++ openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/RegisterOSGIServicesExtension.java Fri Feb 24 16:13:44 2012
@@ -50,7 +50,7 @@ public class RegisterOSGIServicesExtensi
for (ServiceReference service : services) {
final Class<?> clazz = serviceClass(service);
abd.addBean(new OSGiServiceBean<Object>(service));
- LOGGER.debug("added service {} as a CDI Application scoped bean", clazz.getName());
+ LOGGER.debug("added service {0} as a CDI Application scoped bean", clazz.getName());
}
}
}
Modified: openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java (original)
+++ openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java Fri Feb 24 16:13:44 2012
@@ -39,51 +39,61 @@ import java.util.concurrent.locks.Reentr
public class SocketConnectionFactory implements ConnectionFactory {
private KeepAliveStyle keepAliveStyle = KeepAliveStyle.PING;
-
- public static final String PROPERTY_POOL_TIMEOUT = "openejb.client.connection.pool.timeout";
- private static final String PROPERTY_POOL_TIMEOUT2 = "openejb.client.connectionpool.timeout";
- public static final String PROPERTY_POOL_SIZE = "openejb.client.connection.pool.size";
- private static final String PROPERTY_POOL_SIZE2 = "openejb.client.connectionpool.size";
- public static final String PROPERTY_KEEPALIVE = "openejb.client.keepalive";
- private static Map<URI, Pool> connections = new ConcurrentHashMap<URI, Pool>();
+ public static final String PROPERTY_POOL_TIMEOUT = "openejb.client.connection.pool.timeout";
+ private static final String PROPERTY_POOL_TIMEOUT2 = "openejb.client.connectionpool.timeout";
+ public static final String PROPERTY_POOL_SIZE = "openejb.client.connection.pool.size";
+ private static final String PROPERTY_POOL_SIZE2 = "openejb.client.connectionpool.size";
+ public static final String PROPERTY_KEEPALIVE = "openejb.client.keepalive";
+
+ private static final Map<URI, Pool> connections = new ConcurrentHashMap<URI, Pool>();
private int size = 5;
private long timeout = 1000;
public SocketConnectionFactory() {
- size = getSize();
- timeout = getTimeout();
+ this.size = getSize();
+ this.timeout = getTimeout();
+
+ try {
+ String property = System.getProperty(PROPERTY_KEEPALIVE);
+ if (property != null) {
+ property = property.toUpperCase();
+ this.keepAliveStyle = KeepAliveStyle.valueOf(property);
+ }
+ } catch (Throwable e) {
+ //Ignore
+ }
}
private long getTimeout() {
- Properties p = System.getProperties();
+ final Properties p = System.getProperties();
long timeout = getLong(p, SocketConnectionFactory.PROPERTY_POOL_TIMEOUT, this.timeout);
timeout = getLong(p, SocketConnectionFactory.PROPERTY_POOL_TIMEOUT2, timeout);
return timeout;
}
private int getSize() {
- Properties p = System.getProperties();
+ final Properties p = System.getProperties();
int size = getInt(p, SocketConnectionFactory.PROPERTY_POOL_SIZE, this.size);
size = getInt(p, SocketConnectionFactory.PROPERTY_POOL_SIZE2, size);
return size;
}
- public static int getInt(Properties p, String property, int defaultValue) {
+ public static int getInt(final Properties p, final String property, final int defaultValue) {
final String value = p.getProperty(property);
try {
if (value != null) {
- return Integer.parseInt(value);
- }
+ return Integer.parseInt(value);
+ }
} catch (NumberFormatException e) {
//Ignore
}
- return defaultValue;
+ return defaultValue;
}
- public static long getLong(Properties p, String property, long defaultValue) {
- String value = p.getProperty(property);
+ public static long getLong(final Properties p, final String property, final long defaultValue) {
+ final String value = p.getProperty(property);
try {
if (value != null) return Long.parseLong(value);
else return defaultValue;
@@ -92,9 +102,10 @@ public class SocketConnectionFactory imp
}
}
- public Connection getConnection(URI uri) throws java.io.IOException {
+ @Override
+ public Connection getConnection(final URI uri) throws java.io.IOException {
- Pool pool = getPool(uri);
+ final Pool pool = getPool(uri);
SocketConnection conn = pool.get();
if (conn == null) {
@@ -115,25 +126,25 @@ public class SocketConnectionFactory imp
throw new IOException("Connection busy");
}
- OutputStream ouputStream = conn.getOuputStream();
+ final OutputStream ouputStream = conn.getOuputStream();
if (conn.socket.isClosed()) {
pool.put(null);
return getConnection(uri);
}
try {
- ouputStream.write(getKeepAliveStyle().ordinal());
+ ouputStream.write(this.keepAliveStyle.ordinal());
+ ouputStream.flush();
- switch (getKeepAliveStyle()) {
+ switch (this.keepAliveStyle) {
case PING_PING: {
+ ouputStream.write(this.keepAliveStyle.ordinal());
ouputStream.flush();
- ouputStream.write(getKeepAliveStyle().ordinal());
- ouputStream.flush();
+ break;
}
- break;
case PING_PONG: {
- ouputStream.flush();
conn.getInputStream().read();
+ break;
}
}
} catch (IOException e) {
@@ -144,7 +155,7 @@ public class SocketConnectionFactory imp
return conn;
}
- private Pool getPool(URI uri) {
+ private Pool getPool(final URI uri) {
Pool pool = connections.get(uri);
if (pool == null) {
pool = new Pool(uri, getSize(), getTimeout());
@@ -153,15 +164,6 @@ public class SocketConnectionFactory imp
return pool;
}
- public KeepAliveStyle getKeepAliveStyle() {
- String property = System.getProperty(PROPERTY_KEEPALIVE);
- if (property != null) {
- property = property.toUpperCase();
- return KeepAliveStyle.valueOf(property);
- }
- return keepAliveStyle;
- }
-
class SocketConnection implements Connection {
private Socket socket = null;
@@ -173,19 +175,19 @@ public class SocketConnectionFactory imp
private OutputStream out;
private BufferedInputStream in;
- public SocketConnection(URI uri, Pool pool) {
+ public SocketConnection(final URI uri, final Pool pool) {
this.uri = uri;
this.pool = pool;
}
- protected void open(URI uri) throws IOException {
+ protected void open(final URI uri) throws IOException {
/*-----------------------*/
/* Open socket to server */
/*-----------------------*/
try {
if (uri.getScheme().equalsIgnoreCase("ejbds")) {
- SSLSocket sslSocket = (SSLSocket) SSLSocketFactory.getDefault().createSocket(uri.getHost(), uri.getPort());
+ final SSLSocket sslSocket = (SSLSocket) SSLSocketFactory.getDefault().createSocket(uri.getHost(), uri.getPort());
// use an anonymous cipher suite so that a KeyManager or
// TrustManager is not needed
// NOTE: this assumes that the cipher suite is known. A check
@@ -199,35 +201,39 @@ public class SocketConnectionFactory imp
socket.setTcpNoDelay(true);
} catch (ConnectException e) {
- throw new ConnectException("Cannot connect to server '" + uri.toString() + "'. Check that the server is started and that the specified serverURL is correct.");
+ throw new IOException("Cannot connect to server '" + uri.toString() + "'. Check that the server is started and that the specified serverURL is correct.", e);
} catch (IOException e) {
- throw new IOException("Cannot connect to server: '" + uri.toString() + "'. Exception: " + e.getClass().getName() + " : " + e.getMessage());
+ throw new IOException("Cannot connect to server: '" + uri.toString() + "'. Exception: " + e.getClass().getName() + " : " + e.getMessage(), e);
} catch (SecurityException e) {
- throw new IOException("Cannot access server: '" + uri.toString() + "' due to security restrictions in the current VM: " + e.getClass().getName() + " : " + e.getMessage());
+ throw new IOException("Cannot access server: '" + uri.toString() + "' due to security restrictions in the current VM: " + e.getClass().getName() + " : " + e.getMessage(), e);
} catch (Throwable e) {
- throw new IOException("Cannot connect to server: '" + uri.toString() + "' due to an unkown exception in the OpenEJB client: " + e.getClass().getName() + " : " + e.getMessage());
+ throw new IOException("Cannot connect to server: '" + uri.toString() + "' due to an unkown exception in the OpenEJB client: " + e.getClass().getName() + " : " + e.getMessage(), e);
}
}
+ @Override
public void discard() {
pool.put(null);
discarded = true;
try {
socket.close();
- } catch (IOException e) {
+ } catch (Throwable e) {
+ //Ignore
}
// don't bother unlocking it
// it should never get used again
}
+ @Override
public URI getURI() {
return uri;
}
+ @Override
public void close() throws IOException {
if (discarded) return;
@@ -235,6 +241,7 @@ public class SocketConnectionFactory imp
lock.unlock();
}
+ @Override
public InputStream getInputStream() throws IOException {
/*----------------------------------*/
/* Open input streams */
@@ -256,6 +263,7 @@ public class SocketConnectionFactory imp
}
}
+ @Override
public OutputStream getOuputStream() throws IOException {
/*----------------------------------*/
/* Openning output streams */
@@ -277,19 +285,21 @@ public class SocketConnectionFactory imp
public class Input extends java.io.FilterInputStream {
- public Input(InputStream in) {
+ public Input(final InputStream in) {
super(in);
}
+ @Override
public void close() throws IOException {
}
}
public class Output extends java.io.FilterOutputStream {
- public Output(OutputStream out) {
+ public Output(final OutputStream out) {
super(out);
}
+ @Override
public void close() throws IOException {
flush();
}
@@ -303,7 +313,7 @@ public class SocketConnectionFactory imp
private final int size;
private final URI uri;
- private Pool(URI uri, int size, long timeout) {
+ private Pool(final URI uri, final int size, final long timeout) {
this.uri = uri;
this.size = size;
this.semaphore = new Semaphore(size);
@@ -311,13 +321,12 @@ public class SocketConnectionFactory imp
this.timeout = timeout;
this.timeUnit = TimeUnit.MILLISECONDS;
- Object[] objects = new Object[size];
- for (int i = 0; i < objects.length; i++) {
+ for (int i = 0; i < size; i++) {
pool.push(null);
}
}
- public SocketConnection get() throws IOException{
+ public SocketConnection get() throws IOException {
try {
if (semaphore.tryAcquire(timeout, timeUnit)) {
return pool.pop();
@@ -329,7 +338,7 @@ public class SocketConnectionFactory imp
throw new ConnectionPoolTimeoutException("No connections available in pool (size " + size + "). Waited for " + timeout + " milliseconds for a connection.");
}
- public void put(SocketConnection connection) {
+ public void put(final SocketConnection connection) {
pool.push(connection);
semaphore.release();
}
Modified: openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java (original)
+++ openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java Fri Feb 24 16:13:44 2012
@@ -44,9 +44,9 @@ class EjbRequestHandler {
private final ClusterableRequestHandler clusterableRequestHandler;
- private Map<String, AtomicBoolean> asynchronousInvocationCancelMap = new ConcurrentHashMap<String, AtomicBoolean>();
+ private final Map<String, AtomicBoolean> asynchronousInvocationCancelMap = new ConcurrentHashMap<String, AtomicBoolean>();
- EjbRequestHandler(EjbDaemon daemon) {
+ EjbRequestHandler(final EjbDaemon daemon) {
this.daemon = daemon;
clusterableRequestHandler = newClusterableRequestHandler();
@@ -56,14 +56,14 @@ class EjbRequestHandler {
return new BasicClusterableRequestHandler();
}
- public void processRequest(ObjectInputStream in, ObjectOutputStream out) {
+ public void processRequest(final ObjectInputStream in, final ObjectOutputStream out) {
// Setup the client proxy replacement to replace
// the proxies with the IntraVM proxy implementations
EJBHomeProxyHandle.resolver.set(SERVER_SIDE_RESOLVER);
EJBObjectProxyHandle.resolver.set(SERVER_SIDE_RESOLVER);
- EJBRequest req = new EJBRequest();
- EJBResponse res = new EJBResponse();
+ final EJBRequest req = new EJBRequest();
+ final EJBResponse res = new EJBResponse();
try {
req.readExternal(in);
@@ -72,9 +72,9 @@ class EjbRequestHandler {
return;
}
- SecurityService securityService = SystemInstance.get().getComponent(SecurityService.class);
+ final SecurityService securityService = SystemInstance.get().getComponent(SecurityService.class);
try {
- Object clientIdentity = req.getClientIdentity();
+ final Object clientIdentity = req.getClientIdentity();
if (clientIdentity != null) securityService.associate(clientIdentity);
} catch (Throwable t) {
replyWithFatalError(out, t, "Client identity is not valid");
@@ -101,7 +101,7 @@ class EjbRequestHandler {
}
// Need to set this for deserialization of the body
- ClassLoader classLoader = di.getBeanClass().getClassLoader();
+ final ClassLoader classLoader = di.getBeanClass().getClassLoader();
Thread.currentThread().setContextClassLoader(classLoader);
try {
@@ -238,14 +238,14 @@ class EjbRequestHandler {
}
}
- protected void updateServer(EJBRequest req, EJBResponse res) {
- CallContext callContext = CallContext.getCallContext();
- BeanContext beanContext = callContext.getBeanContext();
+ protected void updateServer(final EJBRequest req, final EJBResponse res) {
+ final CallContext callContext = CallContext.getCallContext();
+ final BeanContext beanContext = callContext.getBeanContext();
clusterableRequestHandler.updateServer(beanContext, req, res);
}
- protected void doFUTURE_CANCEL_METHOD(EJBRequest req, EJBResponse res) throws Exception {
- AtomicBoolean invocationCancelTag = asynchronousInvocationCancelMap.get(req.getBody().getRequestId());
+ protected void doFUTURE_CANCEL_METHOD(final EJBRequest req, final EJBResponse res) throws Exception {
+ final AtomicBoolean invocationCancelTag = asynchronousInvocationCancelMap.get(req.getBody().getRequestId());
if (invocationCancelTag == null) {
//TODO ?
} else {
@@ -254,18 +254,18 @@ class EjbRequestHandler {
}
}
- protected void doEjbObject_BUSINESS_METHOD(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbObject_BUSINESS_METHOD(final EJBRequest req, final EJBResponse res) throws Exception {
- CallContext call = CallContext.getCallContext();
- BeanContext beanContext = (BeanContext) call.getBeanContext();
- boolean asynchronous = beanContext.isAsynchronous(req.getMethodInstance());
+ final CallContext call = CallContext.getCallContext();
+ final BeanContext beanContext = (BeanContext) call.getBeanContext();
+ final boolean asynchronous = beanContext.isAsynchronous(req.getMethodInstance());
try {
if (asynchronous) {
- AtomicBoolean invocationCancelTag = new AtomicBoolean(false);
+ final AtomicBoolean invocationCancelTag = new AtomicBoolean(false);
ThreadContext.initAsynchronousCancelled(invocationCancelTag);
asynchronousInvocationCancelMap.put(req.getBody().getRequestId(), invocationCancelTag);
}
- RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
+ final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
Object result = c.invoke(req.getDeploymentId(),
req.getInterfaceClass(), req.getMethodInstance(),
@@ -287,12 +287,12 @@ class EjbRequestHandler {
}
}
- protected void doEjbHome_METHOD(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbHome_METHOD(final EJBRequest req, final EJBResponse res) throws Exception {
- CallContext call = CallContext.getCallContext();
- RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
+ final CallContext call = CallContext.getCallContext();
+ final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
- Object result = c.invoke(req.getDeploymentId(),
+ final Object result = c.invoke(req.getDeploymentId(),
req.getInterfaceClass(), req.getMethodInstance(),
req.getMethodParameters(),
req.getPrimaryKey()
@@ -301,10 +301,10 @@ class EjbRequestHandler {
res.setResponse(ResponseCodes.EJB_OK, result);
}
- protected void doEjbHome_CREATE(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbHome_CREATE(final EJBRequest req, final EJBResponse res) throws Exception {
- CallContext call = CallContext.getCallContext();
- RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
+ final CallContext call = CallContext.getCallContext();
+ final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
Object result = c.invoke(req.getDeploymentId(),
req.getInterfaceClass(), req.getMethodInstance(),
@@ -313,7 +313,7 @@ class EjbRequestHandler {
);
if (result instanceof ProxyInfo) {
- ProxyInfo info = (ProxyInfo) result;
+ final ProxyInfo info = (ProxyInfo) result;
res.setResponse(ResponseCodes.EJB_OK, info.getPrimaryKey());
} else {
@@ -323,10 +323,10 @@ class EjbRequestHandler {
}
}
- protected void doEjbHome_FIND(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbHome_FIND(final EJBRequest req, final EJBResponse res) throws Exception {
- CallContext call = CallContext.getCallContext();
- RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
+ final CallContext call = CallContext.getCallContext();
+ final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
Object result = c.invoke(req.getDeploymentId(),
req.getInterfaceClass(), req.getMethodInstance(),
@@ -337,10 +337,10 @@ class EjbRequestHandler {
/* Multiple instances found */
if (result instanceof Collection) {
- Object[] primaryKeys = ((Collection) result).toArray();
+ final Object[] primaryKeys = ((Collection) result).toArray();
for (int i = 0; i < primaryKeys.length; i++) {
- ProxyInfo proxyInfo = ((ProxyInfo) primaryKeys[i]);
+ final ProxyInfo proxyInfo = ((ProxyInfo) primaryKeys[i]);
if (proxyInfo == null) {
primaryKeys[i] = null;
} else {
@@ -352,10 +352,10 @@ class EjbRequestHandler {
} else if (result instanceof java.util.Enumeration) {
- java.util.Enumeration resultAsEnum = (java.util.Enumeration) result;
- java.util.List<Object> listOfPKs = new ArrayList<Object>();
+ final java.util.Enumeration resultAsEnum = (java.util.Enumeration) result;
+ final java.util.List<Object> listOfPKs = new ArrayList<Object>();
while (resultAsEnum.hasMoreElements()) {
- ProxyInfo proxyInfo = ((ProxyInfo) resultAsEnum.nextElement());
+ final ProxyInfo proxyInfo = ((ProxyInfo) resultAsEnum.nextElement());
if (proxyInfo == null) {
listOfPKs.add(null);
} else {
@@ -366,7 +366,7 @@ class EjbRequestHandler {
res.setResponse(ResponseCodes.EJB_OK_FOUND_ENUMERATION, listOfPKs.toArray(new Object[listOfPKs.size()]));
/* Single instance found */
} else if (result instanceof ProxyInfo) {
- ProxyInfo proxyInfo = ((ProxyInfo) result);
+ final ProxyInfo proxyInfo = ((ProxyInfo) result);
result = proxyInfo.getPrimaryKey();
res.setResponse(ResponseCodes.EJB_OK_FOUND, result);
} else if (result == null) {
@@ -383,28 +383,28 @@ class EjbRequestHandler {
}
}
- protected void doEjbObject_GET_EJB_HOME(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbObject_GET_EJB_HOME(final EJBRequest req, final EJBResponse res) throws Exception {
checkMethodAuthorization(req, res);
}
- protected void doEjbObject_GET_HANDLE(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbObject_GET_HANDLE(final EJBRequest req, final EJBResponse res) throws Exception {
checkMethodAuthorization(req, res);
}
- protected void doEjbObject_GET_PRIMARY_KEY(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbObject_GET_PRIMARY_KEY(final EJBRequest req, final EJBResponse res) throws Exception {
checkMethodAuthorization(req, res);
}
- protected void doEjbObject_IS_IDENTICAL(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbObject_IS_IDENTICAL(final EJBRequest req, final EJBResponse res) throws Exception {
checkMethodAuthorization(req, res);
}
- protected void doEjbObject_REMOVE(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbObject_REMOVE(final EJBRequest req, final EJBResponse res) throws Exception {
- CallContext call = CallContext.getCallContext();
- RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
+ final CallContext call = CallContext.getCallContext();
+ final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
- Object result = c.invoke(req.getDeploymentId(),
+ final Object result = c.invoke(req.getDeploymentId(),
req.getInterfaceClass(), req.getMethodInstance(),
req.getMethodParameters(),
req.getPrimaryKey()
@@ -413,20 +413,20 @@ class EjbRequestHandler {
res.setResponse(ResponseCodes.EJB_OK, null);
}
- protected void doEjbHome_GET_EJB_META_DATA(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbHome_GET_EJB_META_DATA(final EJBRequest req, final EJBResponse res) throws Exception {
checkMethodAuthorization(req, res);
}
- protected void doEjbHome_GET_HOME_HANDLE(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbHome_GET_HOME_HANDLE(final EJBRequest req, final EJBResponse res) throws Exception {
checkMethodAuthorization(req, res);
}
- protected void doEjbHome_REMOVE_BY_HANDLE(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbHome_REMOVE_BY_HANDLE(final EJBRequest req, final EJBResponse res) throws Exception {
- CallContext call = CallContext.getCallContext();
- RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
+ final CallContext call = CallContext.getCallContext();
+ final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
- Object result = c.invoke(req.getDeploymentId(),
+ final Object result = c.invoke(req.getDeploymentId(),
req.getInterfaceClass(), req.getMethodInstance(),
req.getMethodParameters(),
req.getPrimaryKey()
@@ -435,12 +435,12 @@ class EjbRequestHandler {
res.setResponse(ResponseCodes.EJB_OK, null);
}
- protected void doEjbHome_REMOVE_BY_PKEY(EJBRequest req, EJBResponse res) throws Exception {
+ protected void doEjbHome_REMOVE_BY_PKEY(final EJBRequest req, final EJBResponse res) throws Exception {
- CallContext call = CallContext.getCallContext();
- RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
+ final CallContext call = CallContext.getCallContext();
+ final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
- Object result = c.invoke(req.getDeploymentId(),
+ final Object result = c.invoke(req.getDeploymentId(),
req.getInterfaceClass(), req.getMethodInstance(),
req.getMethodParameters(),
req.getPrimaryKey()
@@ -449,11 +449,11 @@ class EjbRequestHandler {
res.setResponse(ResponseCodes.EJB_OK, null);
}
- protected void checkMethodAuthorization(EJBRequest req, EJBResponse res) throws Exception {
+ protected void checkMethodAuthorization(final EJBRequest req, final EJBResponse res) throws Exception {
res.setResponse(ResponseCodes.EJB_OK, null);
}
- private void replyWithFatalError(ObjectOutputStream out, Throwable error, String message) {
+ private void replyWithFatalError(final ObjectOutputStream out, final Throwable error, final String message) {
//This is fatal for the client, but not the server.
if (logger.isWarningEnabled()) {
Modified: openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java (original)
+++ openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java Fri Feb 24 16:13:44 2012
@@ -16,21 +16,20 @@
*/
package org.apache.openejb.server.ejbd;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.Socket;
-import java.util.Properties;
-
-import org.apache.openejb.server.ServiceException;
-import org.apache.openejb.core.ServerFederation;
import org.apache.openejb.ProxyInfo;
+import org.apache.openejb.core.ServerFederation;
+import org.apache.openejb.server.ServiceException;
+import javax.ejb.EJBHome;
import javax.ejb.EJBMetaData;
+import javax.ejb.EJBObject;
import javax.ejb.Handle;
import javax.ejb.HomeHandle;
-import javax.ejb.EJBObject;
-import javax.ejb.EJBHome;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.util.Properties;
public class EjbServer implements org.apache.openejb.server.ServerService, org.apache.openejb.spi.ApplicationServer {
@@ -41,32 +40,39 @@ public class EjbServer implements org.ap
keepAlive = new KeepAliveServer(this);
}
- public void init(Properties props) throws Exception {
+ @Override
+ public void init(final Properties props) throws Exception {
server = EjbDaemon.getEjbDaemon();
server.init(props);
}
+ @Override
public void start() throws ServiceException {
keepAlive.start();
}
+ @Override
public void stop() throws ServiceException {
keepAlive.stop();
}
+ @Override
public String getName() {
return "ejbd";
}
+ @Override
public int getPort() {
return 0;
}
- public void service(Socket socket) throws ServiceException, IOException {
+ @Override
+ public void service(final Socket socket) throws ServiceException, IOException {
keepAlive.service(socket);
}
- public void service(InputStream inputStream, OutputStream outputStream) throws ServiceException, IOException {
+ @Override
+ public void service(final InputStream inputStream, final OutputStream outputStream) throws ServiceException, IOException {
ServerFederation.setApplicationServer(server);
final ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
@@ -77,31 +83,38 @@ public class EjbServer implements org.ap
}
}
+ @Override
public String getIP() {
return "";
}
- public EJBMetaData getEJBMetaData(ProxyInfo info) {
+ @Override
+ public EJBMetaData getEJBMetaData(final ProxyInfo info) {
return server.getEJBMetaData(info);
}
- public Handle getHandle(ProxyInfo info) {
+ @Override
+ public Handle getHandle(final ProxyInfo info) {
return server.getHandle(info);
}
- public HomeHandle getHomeHandle(ProxyInfo info) {
+ @Override
+ public HomeHandle getHomeHandle(final ProxyInfo info) {
return server.getHomeHandle(info);
}
- public EJBObject getEJBObject(ProxyInfo info) {
+ @Override
+ public EJBObject getEJBObject(final ProxyInfo info) {
return server.getEJBObject(info);
}
- public Object getBusinessObject(ProxyInfo info) {
- return server.getBusinessObject(info);
+ @Override
+ public Object getBusinessObject(final ProxyInfo info) {
+ return server.getBusinessObject(info);
}
- public EJBHome getEJBHome(ProxyInfo info) {
+ @Override
+ public EJBHome getEJBHome(final ProxyInfo info) {
return server.getEJBHome(info);
}
}
Modified: openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/KeepAliveServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/KeepAliveServer.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/KeepAliveServer.java (original)
+++ openejb/trunk/openejb/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/KeepAliveServer.java Fri Feb 24 16:13:44 2012
@@ -51,7 +51,7 @@ public class KeepAliveServer implements
private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_SERVER.createChild("keepalive"), KeepAliveServer.class);
private final ServerService service;
- private final long timeout = (1000 * 3);
+ private final long timeout = (1000 * 10);
private final AtomicBoolean running = new AtomicBoolean(false);
private final ConcurrentHashMap<Thread, Session> sessions = new ConcurrentHashMap<Thread, Session>();
@@ -68,7 +68,9 @@ public class KeepAliveServer implements
private void closeInactiveSessions() {
- if (!this.running.get()) return;
+ if (!this.running.get()) {
+ return;
+ }
final BlockingQueue<Runnable> queue = getQueue();
if (queue == null) return;
@@ -83,24 +85,24 @@ public class KeepAliveServer implements
for (final Session session : current) {
- if (session.usage.tryLock()) {
+ final Lock l = session.usage;
+
+ if (l.tryLock()) {
try {
if (now - session.lastRequest > timeout) {
+
+ backlog--;
+
try {
- backlog--;
session.socket.close();
- } catch (IOException e) {
- if (logger.isWarningEnabled()) {
- logger.warning("closeInactiveSessions: Error closing socket. Debug for StackTrace");
- } else if (logger.isDebugEnabled()) {
- logger.debug("closeInactiveSessions: Error closing socket.", e);
- }
+ } catch (Throwable e) {
+ //Ignore
} finally {
removeSession(session);
}
}
} finally {
- session.usage.unlock();
+ l.unlock();
}
}
@@ -115,23 +117,24 @@ public class KeepAliveServer implements
current.addAll(this.sessions.values());
for (final Session session : current) {
- if (session.usage.tryLock()) {
+
+ final Lock l = session.usage;
+
+ if (l.tryLock()) {
try {
session.socket.close();
- } catch (IOException e) {
- if (logger.isWarningEnabled()) {
- logger.warning("closeSessions: Error closing socket. Debug for StackTrace");
- } else if (logger.isDebugEnabled()) {
- logger.debug("closeSessions: Error closing socket.", e);
- }
+ } catch (Throwable e) {
+ //Ignore
} finally {
removeSession(session);
- session.usage.unlock();
+ l.unlock();
}
} else if (logger.isDebugEnabled()) {
logger.debug("Allowing graceful shutdown of " + session.socket.getInetAddress());
}
}
+
+ this.sessions.clear();
}
private BlockingQueue<Runnable> getQueue() {
@@ -179,14 +182,14 @@ public class KeepAliveServer implements
// only used inside the Lock
private final Socket socket;
- public Session(final KeepAliveServer kas, final Socket socket) {
+ protected Session(final KeepAliveServer kas, final Socket socket) {
this.kas = kas;
this.socket = socket;
this.lastRequest = System.currentTimeMillis();
this.thread = Thread.currentThread();
}
- public void service(final Socket socket) throws ServiceException, IOException {
+ protected void service(final Socket socket) throws ServiceException, IOException {
this.kas.addSession(this);
int i = -1;
@@ -208,15 +211,15 @@ public class KeepAliveServer implements
}
final KeepAliveStyle style = KeepAliveStyle.values()[i];
+ final Lock l = this.usage;
try {
- usage.lock();
+ l.lock();
switch (style) {
case PING_PING: {
- in.read();
+ i = in.read();
break;
}
-
case PING_PONG: {
out.write(style.ordinal());
out.flush();
@@ -224,11 +227,16 @@ public class KeepAliveServer implements
}
}
- service.service(new Input(in), new Output(out));
- out.flush();
+ try {
+ service.service(new Input(in), new Output(out));
+ out.flush();
+ } catch (SocketException e) {
+ // Socket closed.
+ break;
+ }
} finally {
this.lastRequest = System.currentTimeMillis();
- usage.unlock();
+ l.unlock();
}
}
} catch (ArrayIndexOutOfBoundsException e) {
@@ -241,7 +249,6 @@ public class KeepAliveServer implements
}
}
-
@Override
public void service(final Socket socket) throws ServiceException, IOException {
final Session session = new Session(this, socket);
@@ -283,7 +290,11 @@ public class KeepAliveServer implements
} catch (Throwable e) {
//Ignore
}
- this.timer.cancel();
+ try {
+ this.timer.cancel();
+ } catch (Throwable e) {
+ //Ignore
+ }
}
}
Modified: openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java (original)
+++ openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java Fri Feb 24 16:13:44 2012
@@ -52,11 +52,11 @@ public class Server implements Service {
// TODO: Remove it once init() suits our (initialisation) needs
@Override
- public void init(Properties props) throws Exception {
+ public void init(final Properties props) throws Exception {
this.props = props;
- SystemInstance system = SystemInstance.get();
- File home = system.getHome().getDirectory();
+ final SystemInstance system = SystemInstance.get();
+ final File home = system.getHome().getDirectory();
system.setProperty(DeploymentFilterable.CLASSPATH_INCLUDE, system.getProperty(DeploymentFilterable.CLASSPATH_INCLUDE, ".*/" + home.getName() + "/lib/.*"));
system.setProperty(DeploymentFilterable.CLASSPATH_REQUIRE_DESCRIPTOR, system.getProperty(DeploymentFilterable.CLASSPATH_REQUIRE_DESCRIPTOR, "true"));
system.setProperty(DeploymentFilterable.CLASSPATH_FILTER_SYSTEMAPPS, system.getProperty(DeploymentFilterable.CLASSPATH_FILTER_SYSTEMAPPS, "false"));
@@ -99,21 +99,21 @@ public class Server implements Service {
manager.stop();
}
- public void addService(URI uri) {
+ public void addService(final URI uri) {
}
public static class ServerServiceFactory {
- public ServerService createService(URI location) throws IOException {
+ public ServerService createService(final URI location) throws IOException {
return null;
}
}
- public void setServiceManager(ServiceManager serviceManager) {
+ public void setServiceManager(final ServiceManager serviceManager) {
manager = serviceManager;
}
- public void setPropertiesService(PropertiesService propertiesService) {
+ public void setPropertiesService(final PropertiesService propertiesService) {
this.propertiesService = propertiesService;
}
}
Modified: openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServicePool.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServicePool.java?rev=1293319&r1=1293318&r2=1293319&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServicePool.java (original)
+++ openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServicePool.java Fri Feb 24 16:13:44 2012
@@ -16,23 +16,22 @@
*/
package org.apache.openejb.server;
-import java.util.concurrent.Executor;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
import org.apache.openejb.loader.Options;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Properties;
+import java.util.concurrent.Executor;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
public class ServicePool implements ServerService {
private static final Logger log = Logger.getInstance(LogCategory.SERVICEPOOL, "org.apache.openejb.util.resources");
@@ -42,22 +41,22 @@ public class ServicePool implements Serv
private final ThreadPoolExecutor threadPool;
private final AtomicBoolean stop = new AtomicBoolean();
- public ServicePool(ServerService next, String name, Properties properties) {
+ public ServicePool(final ServerService next, final String name, final Properties properties) {
this(next, name, new Options(properties).get("threads", 100));
}
- public ServicePool(ServerService next, final String name, int threads) {
+ public ServicePool(final ServerService next, final String name, final int threads) {
this.next = next;
final int keepAliveTime = (1000 * 60 * 5);
- threadPool = new ThreadPoolExecutor(threads, threads, keepAliveTime, TimeUnit.MILLISECONDS, new LinkedBlockingQueue());
+ threadPool = new ThreadPoolExecutor(threads, threads, keepAliveTime, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
threadPool.setThreadFactory(new ThreadFactory() {
private volatile int id = 0;
- public Thread newThread(Runnable arg0) {
- Thread thread = new Thread(arg0, name + " " + getNextID());
- return thread;
+ @Override
+ public Thread newThread(final Runnable arg0) {
+ return new Thread(arg0, name + " " + getNextID());
}
private int getNextID() {
@@ -70,7 +69,7 @@ public class ServicePool implements Serv
SystemInstance.get().setComponent(ServicePool.class, this);
}
- public ServicePool(ServerService next, Executor executor) {
+ public ServicePool(final ServerService next, final Executor executor) {
this.next = next;
this.executor = executor;
this.threadPool = null;
@@ -80,17 +79,22 @@ public class ServicePool implements Serv
return threadPool;
}
- public void service(InputStream in, OutputStream out) throws ServiceException, IOException {
+ @Override
+ public void service(final InputStream in, final OutputStream out) throws ServiceException, IOException {
}
+ @Override
public void service(final Socket socket) throws ServiceException, IOException {
final Runnable service = new Runnable() {
+ @Override
public void run() {
try {
if (stop.get()) return;
next.service(socket);
} catch (SecurityException e) {
log.error("Security error: " + e.getMessage(), e);
+ } catch (IOException e) {
+ log.debug("Unexpected IO error", e);
} catch (Throwable e) {
log.error("Unexpected error", e);
} finally {
@@ -112,9 +116,10 @@ public class ServicePool implements Serv
};
final ClassLoader tccl = Thread.currentThread().getContextClassLoader();
- Runnable ctxCL = new Runnable() {
+ final Runnable ctxCL = new Runnable() {
+ @Override
public void run() {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ final ClassLoader cl = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(tccl);
try {
service.run();
@@ -130,16 +135,18 @@ public class ServicePool implements Serv
/**
* Pulls out the access log information
*
- * @param props
+ * @param props Properties
* @throws ServiceException
*/
- public void init(Properties props) throws Exception {
+ @Override
+ public void init(final Properties props) throws Exception {
// Do our stuff
// Then call the next guy
next.init(props);
}
+ @Override
public void start() throws ServiceException {
// Do our stuff
@@ -147,6 +154,7 @@ public class ServicePool implements Serv
next.start();
}
+ @Override
public void stop() throws ServiceException {
// Do our stuff
@@ -159,6 +167,7 @@ public class ServicePool implements Serv
* Gets the name of the service.
* Used for display purposes only
*/
+ @Override
public String getName() {
return next.getName();
}
@@ -167,6 +176,7 @@ public class ServicePool implements Serv
* Gets the ip number that the
* daemon is listening on.
*/
+ @Override
public String getIP() {
return next.getIP();
}
@@ -175,6 +185,7 @@ public class ServicePool implements Serv
* Gets the port number that the
* daemon is listening on.
*/
+ @Override
public int getPort() {
return next.getPort();
}