You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2010/08/21 18:58:58 UTC
svn commit: r987790 [1/2] - in /openejb/trunk/openejb3:
assembly/openejb-jetty/openejb-jetty-common/src/main/java/org/apache/openejb/jetty/common/
assembly/openejb-standalone/
assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/ope...
Author: dblevins
Date: Sat Aug 21 16:58:57 2010
New Revision: 987790
URL: http://svn.apache.org/viewvc?rev=987790&view=rev
Log:
Better support for standalone modules
Partial revert of change allowing AppInfo.jarPath to be null -- this broke the tomcat integration, deploy tool and a few other things.
Strict non-null check on App id/path throughout deployment.
Partial merge of David Jencks' code for a better "openejb.strict.interface.declaration" mode. Still needs to be enabled and related tests flushed out
Modified:
openejb/trunk/openejb3/assembly/openejb-jetty/openejb-jetty-common/src/main/java/org/apache/openejb/jetty/common/OpenEJBConfiguration.java
openejb/trunk/openejb3/assembly/openejb-standalone/try.sh
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/pom.xml
openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/CustomMdbContainerTest.java
openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/QuartzMdbContainerTest.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ClientInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Deploy.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java
openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/EjbRefTest.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigurationFactoryTest.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/InheritedAppExceptionTest.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/CustomMdbContainerTest.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/QuartzMdbContainerTest.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/singleton/DependsOnTest.java
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java
openejb/trunk/openejb3/container/openejb-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/AbstractApplication.java
openejb/trunk/openejb3/container/openejb-spring/src/main/java/org/apache/openejb/spring/ClassPathApplication.java
openejb/trunk/openejb3/server/openejb-client/src/main/java/org/apache/openejb/client/Main.java
openejb/trunk/openejb3/server/openejb-client/src/test/java/org/apache/openejb/client/MainTest.java
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java
openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
Modified: openejb/trunk/openejb3/assembly/openejb-jetty/openejb-jetty-common/src/main/java/org/apache/openejb/jetty/common/OpenEJBConfiguration.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-jetty/openejb-jetty-common/src/main/java/org/apache/openejb/jetty/common/OpenEJBConfiguration.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-jetty/openejb-jetty-common/src/main/java/org/apache/openejb/jetty/common/OpenEJBConfiguration.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-jetty/openejb-jetty-common/src/main/java/org/apache/openejb/jetty/common/OpenEJBConfiguration.java Sat Aug 21 16:58:57 2010
@@ -155,10 +155,7 @@ public class OpenEJBConfiguration implem
WebModule webModule = createWebModule(application);
// create the app module
- AppModule appModule = new AppModule(webModule.getClassLoader(), webModule.getJarLocation());
-
- // add the web module itself
- appModule.getWebModules().add(webModule);
+ AppModule appModule = new AppModule(webModule);
// check each url to determine if it is an ejb jar
for (URL url : getUrls(application)) {
Modified: openejb/trunk/openejb3/assembly/openejb-standalone/try.sh
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-standalone/try.sh?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-standalone/try.sh (original)
+++ openejb/trunk/openejb3/assembly/openejb-standalone/try.sh Sat Aug 21 16:58:57 2010
@@ -26,12 +26,13 @@ cd target/
tar xzvf openejb-$VERSION.tar.gz
cd openejb-$VERSION
mkdir apps
-cp $JAR apps/
+mkdir logs
+#cp $JAR apps/
./bin/openejb start &
sleep 1
-tail -f logs/openejb.log
-#sleep 14
-#./bin/openejb deploy -h
-#$JAR
+tail -f logs/openejb.log &
+sleep 14
+echo ./bin/openejb deploy $JAR
+./bin/openejb deploy $JAR
Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java Sat Aug 21 16:58:57 2010
@@ -213,7 +213,7 @@ public class TomcatWebAppBuilder impleme
for (WebAppInfo webApp : appInfo.webApps) {
if (getContextInfo(webApp) == null) {
StandardContext standardContext = new StandardContext();
- String contextXmlFile = webApp.codebase + "/META-INF/context.xml";
+ String contextXmlFile = webApp.path + "/META-INF/context.xml";
if (new File(contextXmlFile).exists()) {
standardContext.setConfigFile(contextXmlFile);
standardContext.setOverride(true);
@@ -222,7 +222,7 @@ public class TomcatWebAppBuilder impleme
standardContext.addLifecycleListener(contextConfig);
standardContext.setPath("/" + webApp.contextRoot);
- standardContext.setDocBase(webApp.codebase);
+ standardContext.setDocBase(webApp.path);
standardContext.setParentClassLoader(classLoader);
standardContext.setDelegate(true);
@@ -480,7 +480,7 @@ public class TomcatWebAppBuilder impleme
ContextInfo contextInfo = getContextInfo(standardContext);
if (contextInfo != null && contextInfo.appInfo != null && contextInfo.deployer == null) {
try {
- assembler.destroyApplication(contextInfo.appInfo.jarPath);
+ assembler.destroyApplication(contextInfo.appInfo.path);
} catch (Exception e) {
logger.error("Unable to stop web application " + standardContext.getPath() + ": Exception: " + e.getMessage(), e);
}
@@ -524,9 +524,9 @@ public class TomcatWebAppBuilder impleme
DeployedApplication deployedApplication = entry.getValue();
if (deployedApplication.isModified()) {
try {
- assembler.destroyApplication(deployedApplication.appInfo.jarPath);
+ assembler.destroyApplication(deployedApplication.appInfo.path);
} catch (Exception e) {
- logger.error("Unable to application " + deployedApplication.appInfo.jarPath + ": Exception: " + e.getMessage(), e);
+ logger.error("Unable to application " + deployedApplication.appInfo.path + ": Exception: " + e.getMessage(), e);
}
iterator.remove();
}
@@ -660,7 +660,7 @@ public class TomcatWebAppBuilder impleme
WebModule webModule = createWebModule(standardContext);
// create the app module
- AppModule appModule = new AppModule(webModule.getClassLoader(), webModule.getJarLocation());
+ AppModule appModule = new AppModule(webModule);
// add the web module itself
appModule.getWebModules().add(webModule);
Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/pom.xml?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/pom.xml (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/pom.xml Sat Aug 21 16:58:57 2010
@@ -218,6 +218,16 @@
<groupId>org.apache.tomcat</groupId>
<artifactId>catalina</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-api</artifactId>
+ <version>1.2.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-impl</artifactId>
+ <version>1.2.2</version>
+ </dependency>
</dependencies>
</project>
Modified: openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/CustomMdbContainerTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/CustomMdbContainerTest.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/CustomMdbContainerTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/CustomMdbContainerTest.java Sat Aug 21 16:58:57 2010
@@ -87,7 +87,7 @@ public class CustomMdbContainerTest exte
MessageAdapter messageAdapter = inbound.setMessageAdapter(new MessageAdapter());
MessageListener listener = messageAdapter.addMessageListener(new MessageListener(EmailConsumer.class, EmailAccountInfo.class));
listener.getActivationSpec().addRequiredConfigProperty("address");
- app.getResourceModules().add(new ConnectorModule(connector));
+ app.getConnectorModules().add(new ConnectorModule(connector));
EjbJar ejbJar = new EjbJar();
ejbJar.addEnterpriseBean(new MessageDrivenBean(EmailBean.class));
Modified: openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/QuartzMdbContainerTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/QuartzMdbContainerTest.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/QuartzMdbContainerTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-activemq4/src/test/java/org/apache/openejb/core/mdb/QuartzMdbContainerTest.java Sat Aug 21 16:58:57 2010
@@ -78,7 +78,7 @@ public class QuartzMdbContainerTest exte
MessageAdapter messageAdapter = inbound.setMessageAdapter(new MessageAdapter());
MessageListener listener = messageAdapter.addMessageListener(new MessageListener(Job.class, JobSpec.class));
listener.getActivationSpec().addRequiredConfigProperty("cronExpression");
- app.getResourceModules().add(new ConnectorModule(connector));
+ app.getConnectorModules().add(new ConnectorModule(connector));
EjbJar ejbJar = new EjbJar();
ejbJar.addEnterpriseBean(new MessageDrivenBean(CronBean.class));
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java Sat Aug 21 16:58:57 2010
@@ -36,6 +36,7 @@ import javax.naming.NameNotFoundExceptio
import javax.naming.NamingException;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.config.AnnotationDeployer;
import org.apache.openejb.config.ConfigurationFactory;
import org.apache.openejb.config.DeploymentsResolver;
import org.apache.openejb.config.RequireDescriptors;
@@ -83,6 +84,7 @@ public class OpenEjbContainer extends EJ
String appId = (String) properties.get(EJBContainer.APP_NAME);
try {
Properties props = new Properties();
+ props.put(AnnotationDeployer.ProcessAnnotatedBeans.STRICT_INTERFACE_DECLARATION, Boolean.toString(true));
props.put(DeploymentsResolver.DEPLOYMENTS_CLASSPATH_PROPERTY, Boolean.toString(false));
//This causes scan of the entire classpath except for default excludes. This may be quite slow.
props.put(DeploymentsResolver.CLASSPATH_INCLUDE, ".*");
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java Sat Aug 21 16:58:57 2010
@@ -112,7 +112,7 @@ public class DeployerEjb implements Depl
for (DeploymentModule module : appModule.getWebModules()) {
modules.put(module.getModuleId(), module);
}
- for (DeploymentModule module : appModule.getResourceModules()) {
+ for (DeploymentModule module : appModule.getConnectorModules()) {
modules.put(module.getModuleId(), module);
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java Sat Aug 21 16:58:57 2010
@@ -26,7 +26,8 @@ import java.util.TreeSet;
*/
public class AppInfo extends InfoObject {
public String appId;
- public String jarPath;
+ public String path;
+ public boolean standaloneModule;
public final List<ClientInfo> clients = new ArrayList<ClientInfo>();
public final List<EjbJarInfo> ejbJars = new ArrayList<EjbJarInfo>();
public final List<ConnectorInfo> connectors = new ArrayList<ConnectorInfo>();
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Sat Aug 21 16:58:57 2010
@@ -98,6 +98,7 @@ import org.apache.openejb.spi.Applicatio
import org.apache.openejb.spi.ContainerSystem;
import org.apache.openejb.spi.SecurityService;
import org.apache.openejb.util.AsmParameterNameLoader;
+import org.apache.openejb.util.Debug;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.Messages;
@@ -164,10 +165,10 @@ public class Assembler extends Assembler
for (DeploymentListener listener : listeners) {
String listenerName = listener.getClass().getSimpleName();
try {
- logger.debug("appCreationEvent.start", listenerName, getPath(appInfo));
+ logger.debug("appCreationEvent.start", listenerName, appInfo.path);
listener.afterApplicationCreated(appInfo);
} catch (Throwable e) {
- logger.error("appCreationEvent.failed", e, listenerName, getPath(appInfo));
+ logger.error("appCreationEvent.failed", e, listenerName, appInfo.path);
}
}
}
@@ -180,10 +181,10 @@ public class Assembler extends Assembler
for (DeploymentListener listener : listeners) {
String listenerName = listener.getClass().getSimpleName();
try {
- logger.debug("appDestroyedEvent.start", listenerName, getPath(appInfo));
+ logger.debug("appDestroyedEvent.start", listenerName, appInfo.path);
listener.beforeApplicationDestroyed(appInfo);
} catch (Throwable e) {
- logger.error("appDestroyedEvent.failed", e, listenerName, getPath(appInfo));
+ logger.error("appDestroyedEvent.failed", e, listenerName, appInfo.path);
}
}
}
@@ -371,7 +372,7 @@ public class Assembler extends Assembler
} catch (DuplicateDeploymentIdException e) {
// already logged.
} catch (Throwable e) {
- logger.error("appNotDeployed", e, getPath(appInfo));
+ logger.error("appNotDeployed", e, appInfo.path);
}
}
}
@@ -386,7 +387,8 @@ public class Assembler extends Assembler
public void createEjbJar(EjbJarInfo ejbJar) throws NamingException, IOException, OpenEJBException {
AppInfo appInfo = new AppInfo();
- appInfo.jarPath = ejbJar.jarPath;
+ appInfo.path = ejbJar.path;
+ appInfo.appId = ejbJar.moduleId;
appInfo.ejbJars.add(ejbJar);
createApplication(appInfo);
}
@@ -397,49 +399,56 @@ public class Assembler extends Assembler
public void createEjbJar(EjbJarInfo ejbJar, ClassLoader classLoader) throws NamingException, IOException, OpenEJBException {
AppInfo appInfo = new AppInfo();
- appInfo.jarPath = ejbJar.jarPath;
+ appInfo.path = ejbJar.path;
+ appInfo.appId = ejbJar.moduleId;
appInfo.ejbJars.add(ejbJar);
createApplication(appInfo, classLoader);
}
public void createClient(ClientInfo clientInfo) throws NamingException, IOException, OpenEJBException {
AppInfo appInfo = new AppInfo();
- appInfo.jarPath = clientInfo.moduleId;
+ appInfo.path = clientInfo.path;
+ appInfo.appId = clientInfo.moduleId;
appInfo.clients.add(clientInfo);
createApplication(appInfo);
}
public void createClient(ClientInfo clientInfo, ClassLoader classLoader) throws NamingException, IOException, OpenEJBException {
AppInfo appInfo = new AppInfo();
- appInfo.jarPath = clientInfo.moduleId;
+ appInfo.path = clientInfo.path;
+ appInfo.appId = clientInfo.moduleId;
appInfo.clients.add(clientInfo);
createApplication(appInfo, classLoader);
}
public void createConnector(ConnectorInfo connectorInfo) throws NamingException, IOException, OpenEJBException {
AppInfo appInfo = new AppInfo();
- appInfo.jarPath = connectorInfo.moduleId;
+ appInfo.path = connectorInfo.path;
+ appInfo.appId = connectorInfo.moduleId;
appInfo.connectors.add(connectorInfo);
createApplication(appInfo);
}
public void createConnector(ConnectorInfo connectorInfo, ClassLoader classLoader) throws NamingException, IOException, OpenEJBException {
AppInfo appInfo = new AppInfo();
- appInfo.jarPath = connectorInfo.moduleId;
+ appInfo.path = connectorInfo.path;
+ appInfo.appId = connectorInfo.moduleId;
appInfo.connectors.add(connectorInfo);
createApplication(appInfo, classLoader);
}
public void createWebApp(WebAppInfo webAppInfo) throws NamingException, IOException, OpenEJBException {
AppInfo appInfo = new AppInfo();
- appInfo.jarPath = webAppInfo.moduleId;
+ appInfo.path = webAppInfo.path;
+ appInfo.appId = webAppInfo.moduleId;
appInfo.webApps.add(webAppInfo);
createApplication(appInfo);
}
public void createWebApp(WebAppInfo webAppInfo, ClassLoader classLoader) throws NamingException, IOException, OpenEJBException {
AppInfo appInfo = new AppInfo();
- appInfo.jarPath = webAppInfo.moduleId;
+ appInfo.path = webAppInfo.path;
+ appInfo.appId = webAppInfo.moduleId;
appInfo.webApps.add(webAppInfo);
createApplication(appInfo, classLoader);
}
@@ -453,8 +462,18 @@ public class Assembler extends Assembler
}
public List<DeploymentInfo> createApplication(AppInfo appInfo, ClassLoader classLoader, boolean start) throws OpenEJBException, IOException, NamingException {
-
- logger.info("createApplication.start", getPath(appInfo));
+ // The path is used in the UrlCache, command line deployer, JNDI name templates, tomcat integration and a few other places
+ if (appInfo.path == null) throw new IllegalArgumentException("AppInfo.path cannot be null");
+ if (appInfo.appId == null) throw new IllegalArgumentException("AppInfo.appId cannot be null");
+
+ logger.info("createApplication.start", appInfo.path);
+
+// try {
+// Thread.sleep(5000);
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// Thread.interrupted();
+// }
// To start out, ensure we don't already have any beans deployed with duplicate IDs. This
// is a conflict we can't handle.
@@ -468,7 +487,7 @@ public class Assembler extends Assembler
}
if (used.size() > 0) {
- String message = logger.error("createApplication.appFailedDuplicateIds", getPath(appInfo));
+ String message = logger.error("createApplication.appFailedDuplicateIds", appInfo.path);
for (String id : used) {
logger.debug("createApplication.deploymentIdInUse", id);
message += "\n "+id;
@@ -488,10 +507,10 @@ public class Assembler extends Assembler
CmpJarBuilder cmpJarBuilder = new CmpJarBuilder(appInfo, classLoader);
File generatedJar = cmpJarBuilder.getJarFile();
if (generatedJar != null) {
- classLoader = ClassLoaderUtil.createClassLoader(getPath(appInfo), new URL []{generatedJar.toURI().toURL()}, classLoader);
+ classLoader = ClassLoaderUtil.createClassLoader(appInfo.path, new URL []{generatedJar.toURI().toURL()}, classLoader);
}
- AppContext appContext = new AppContext(appInfo.appId, SystemInstance.get(), classLoader, globalJndiContext, appJndiContext);
+ AppContext appContext = new AppContext(appInfo.appId, SystemInstance.get(), classLoader, globalJndiContext, appJndiContext, false);
// JPA - Persistence Units MUST be processed first since they will add ClassFileTransformers
// to the class loader which must be added before any classes are loaded
@@ -652,17 +671,20 @@ public class Assembler extends Assembler
jndiEncBuilder.setUseCrossClassLoaderRef(false);
Context context = (Context) jndiEncBuilder.build(JndiEncBuilder.JndiScope.comp);
+ Debug.printContext(context);
+
containerSystem.getJNDIContext().bind("openejb/client/" + clientInfo.moduleId, context);
- if (clientInfo.codebase != null) {
- containerSystem.getJNDIContext().bind("openejb/client/" + clientInfo.moduleId + "/comp/path", clientInfo.codebase);
+
+ if (clientInfo.path != null) {
+ context.bind("info/path", clientInfo.path);
}
if (clientInfo.mainClass != null) {
- containerSystem.getJNDIContext().bind("openejb/client/" + clientInfo.moduleId + "/comp/mainClass", clientInfo.mainClass);
+ context.bind("info/mainClass", clientInfo.mainClass);
}
if (clientInfo.callbackHandler != null) {
- containerSystem.getJNDIContext().bind("openejb/client/" + clientInfo.moduleId + "/comp/callbackHandler", clientInfo.callbackHandler);
+ context.bind("info/callbackHandler", clientInfo.callbackHandler);
}
- containerSystem.getJNDIContext().bind("openejb/client/" + clientInfo.moduleId + "/comp/injections", injections);
+ context.bind("info/injections", injections);
for (String clientClassName : clientInfo.remoteClients) {
containerSystem.getJNDIContext().bind("openejb/client/" + clientClassName, clientInfo.moduleId);
@@ -688,9 +710,9 @@ public class Assembler extends Assembler
globalEjbResolver.addAll(appInfo.ejbJars);
}
- logger.info("createApplication.success", getPath(appInfo));
+ logger.info("createApplication.success", appInfo.path);
- deployedApplications.put(getPath(appInfo), appInfo);
+ deployedApplications.put(appInfo.path, appInfo);
fireAfterApplicationCreated(appInfo);
return allDeployments;
@@ -698,30 +720,11 @@ public class Assembler extends Assembler
try {
destroyApplication(appInfo);
} catch (Exception e1) {
- logger.debug("createApplication.undeployFailed", e1, getPath(appInfo));
+ logger.debug("createApplication.undeployFailed", e1, appInfo.path);
}
- throw new OpenEJBException(messages.format("createApplication.failed", getPath(appInfo)), t);
- }
- }
-
- private String getPath(AppInfo appInfo) {
- if (appInfo.jarPath != null) {
- return appInfo.jarPath;
- }
- for (EjbJarInfo ejbJarInfo: appInfo.ejbJars) {
- return ejbJarInfo.jarPath;
- }
- for (ConnectorInfo connectorInfo: appInfo.connectors) {
- return connectorInfo.codebase;
- }
- for (WebAppInfo webAppInfo: appInfo.webApps) {
- return webAppInfo.codebase;
- }
- for (ClientInfo clientInfo: appInfo.clients) {
- return clientInfo.codebase;
+ throw new OpenEJBException(messages.format("createApplication.failed", appInfo.path), t);
}
- throw new IllegalStateException("Nothing in app to locate it: " + appInfo);
}
private TransactionPolicyFactory createTransactionPolicyFactory(EjbJarInfo ejbJar, ClassLoader classLoader) {
@@ -798,9 +801,9 @@ public class Assembler extends Assembler
Assembler assembler = this;
for (AppInfo appInfo : assembler.getDeployedApplications()) {
try {
- assembler.destroyApplication(getPath(appInfo));
+ assembler.destroyApplication(appInfo.path);
} catch (UndeployException e) {
- logger.error("Undeployment failed: " + getPath(appInfo), e);
+ logger.error("Undeployment failed: " + appInfo.path, e);
} catch (NoSuchApplicationException e) {
}
}
@@ -841,7 +844,7 @@ public class Assembler extends Assembler
}
private void destroyApplication(AppInfo appInfo) throws UndeployException {
- logger.info("destroyApplication.start", getPath(appInfo));
+ logger.info("destroyApplication.start", appInfo.path);
fireBeforeApplicationDestroyed(appInfo);
@@ -854,14 +857,14 @@ public class Assembler extends Assembler
Context globalContext = containerSystem.getJNDIContext();
- UndeployException undeployException = new UndeployException(messages.format("destroyApplication.failed", getPath(appInfo)));
+ UndeployException undeployException = new UndeployException(messages.format("destroyApplication.failed", appInfo.path));
WebAppBuilder webAppBuilder = SystemInstance.get().getComponent(WebAppBuilder.class);
if (webAppBuilder != null) {
try {
webAppBuilder.undeployWebApps(appInfo);
} catch (Exception e) {
- undeployException.getCauses().add(new Exception("App: " + getPath(appInfo) + ": " + e.getMessage(), e));
+ undeployException.getCauses().add(new Exception("App: " + appInfo.path + ": " + e.getMessage(), e));
}
}
@@ -970,22 +973,22 @@ public class Assembler extends Assembler
}
}
- ClassLoaderUtil.destroyClassLoader(getPath(appInfo));
+ ClassLoaderUtil.destroyClassLoader(appInfo.path);
if (undeployException.getCauses().size() > 0) {
throw undeployException;
}
- logger.debug("destroyApplication.success", getPath(appInfo));
+ logger.debug("destroyApplication.success", appInfo.path);
}
public ClassLoader createAppClassLoader(AppInfo appInfo) throws OpenEJBException, IOException {
List<URL> jars = new ArrayList<URL>();
for (EjbJarInfo info : appInfo.ejbJars) {
- jars.add(toUrl(info.jarPath));
+ jars.add(toUrl(info.path));
}
for (ClientInfo info : appInfo.clients) {
- jars.add(toUrl(info.codebase));
+ jars.add(toUrl(info.path));
}
for (ConnectorInfo info : appInfo.connectors) {
for (String jarPath : info.libs) {
@@ -997,7 +1000,7 @@ public class Assembler extends Assembler
}
// Create the class loader
- ClassLoader classLoader = ClassLoaderUtil.createClassLoader(getPath(appInfo), jars.toArray(new URL[jars.size()]), OpenEJB.class.getClassLoader());
+ ClassLoader classLoader = ClassLoaderUtil.createClassLoader(appInfo.path, jars.toArray(new URL[jars.size()]), OpenEJB.class.getClassLoader());
return classLoader;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ClientInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ClientInfo.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ClientInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ClientInfo.java Sat Aug 21 16:58:57 2010
@@ -23,7 +23,7 @@ import java.util.TreeSet;
public class ClientInfo extends InfoObject {
- public String codebase;
+ public String path;
public String description;
public String displayName;
public String smallIcon;
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java Sat Aug 21 16:58:57 2010
@@ -24,7 +24,7 @@ import java.util.TreeSet;
public class ConnectorInfo extends InfoObject {
- public String codebase;
+ public String path;
public String description;
public String displayName;
public String smallIcon;
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java Sat Aug 21 16:58:57 2010
@@ -26,7 +26,7 @@ public class EjbJarInfo extends InfoObje
public final Properties properties = new Properties();
public String moduleId;
- public String jarPath;
+ public String path;
public final List<EnterpriseBeanInfo> enterpriseBeans = new ArrayList<EnterpriseBeanInfo>();
public final List<SecurityRoleInfo> securityRoles = new ArrayList<SecurityRoleInfo>();
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java Sat Aug 21 16:58:57 2010
@@ -27,6 +27,7 @@ import javax.jms.MessageListener;
import org.apache.openejb.DeploymentInfo;
import org.apache.openejb.InterfaceType;
import org.apache.openejb.core.CoreDeploymentInfo;
+import org.apache.openejb.core.ModuleContext;
import org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference;
import org.apache.openejb.spi.ContainerSystem;
import org.apache.openejb.util.LogCategory;
@@ -40,6 +41,7 @@ import org.apache.openejb.core.ivm.namin
import org.apache.openejb.core.ivm.naming.IntraVmJndiReference;
import org.apache.openejb.util.StringTemplate;
+import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
@@ -197,9 +199,21 @@ public class JndiBuilder {
beanInfos.put(beanInfo.ejbDeploymentId, beanInfo);
}
+ final Iterator<DeploymentInfo> it = deployments.values().iterator();
+ if (!it.hasNext()) return;
+
+ final ModuleContext moduleContext = ((CoreDeploymentInfo) it.next()).getModuleContext();
+
appContext = new HashMap<String, String>();
putAll(appContext, SystemInstance.get().getProperties());
- putAll(appContext, ejbJarInfo.properties);
+ putAll(appContext, moduleContext.getAppContext().getProperties());
+ putAll(appContext, moduleContext.getProperties());
+
+ appContext.put("appName", moduleContext.getAppContext().getId());
+ appContext.put("appId", moduleContext.getAppContext().getId());
+
+ appContext.put("moduleName", moduleContext.getId());
+ appContext.put("moduleId", moduleContext.getId());
}
private void putAll(Map<String, String> map, Properties properties) {
@@ -228,7 +242,6 @@ public class JndiBuilder {
beanContext = new HashMap<String, String>(appContext);
putAll(beanContext, deploymentInfo.getProperties());
- beanContext.put("moduleId", deploymentInfo.getModuleID());
beanContext.put("ejbType", deploymentInfo.getComponentType().name());
beanContext.put("ejbClass", deploymentInfo.getBeanClass().getName());
beanContext.put("ejbClass.simpleName", deploymentInfo.getBeanClass().getSimpleName());
@@ -531,7 +544,7 @@ public class JndiBuilder {
Context appContext = cdi.getModuleContext().getAppContext().getAppJndiContext();
Context globalContext = cdi.getModuleContext().getAppContext().getGlobalJndiContext();
- String appName = cdi.getModuleContext().getAppContext().getId() == null? "": cdi.getModuleContext().getAppContext().getId() + "/";
+ String appName = cdi.getModuleContext().getAppContext().isStandaloneModule() ? "" : cdi.getModuleContext().getAppContext().getId() + "/";
String moduleName = cdi.getModuleID() + "/";
String beanName = cdi.getEjbName();
if (interfaceName != null) {
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppInfo.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppInfo.java Sat Aug 21 16:58:57 2010
@@ -23,7 +23,7 @@ import java.util.List;
import java.util.ArrayList;
public class WebAppInfo extends InfoObject {
- public String codebase;
+ public String path;
public String description;
public String displayName;
public String smallIcon;
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java Sat Aug 21 16:58:57 2010
@@ -187,8 +187,8 @@ public class LocalInitialContext extends
while (clazz != null && !clazz.equals(Object.class)) {
try {
String moduleId = (String) clients.lookup(clazz.getName());
- injections = (List<Injection>) clients.lookup(moduleId + "/comp/injections");
context = (Context) clients.lookup(moduleId);
+ injections = (List<Injection>) context.lookup("info/injections");
break;
} catch (NamingException e) {
clazz = clazz.getSuperclass();
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Sat Aug 21 16:58:57 2010
@@ -292,7 +292,7 @@ public class AnnotationDeployer implemen
removeModule();
}
}
- for (ConnectorModule connectorModule : appModule.getResourceModules()) {
+ for (ConnectorModule connectorModule : appModule.getConnectorModules()) {
setModule(connectorModule);
try {
deploy(connectorModule);
@@ -648,7 +648,7 @@ public class AnnotationDeployer implemen
public static class ProcessAnnotatedBeans implements DynamicDeployer {
- private static final String STRICT_INTERFACE_DECLARATION = "openejb.strict.interface.declaration";
+ public static final String STRICT_INTERFACE_DECLARATION = "openejb.strict.interface.declaration";
public AppModule deploy(AppModule appModule) throws OpenEJBException {
for (EjbModule ejbModule : appModule.getEjbModules()) {
@@ -667,7 +667,7 @@ public class AnnotationDeployer implemen
removeModule();
}
}
- for (ConnectorModule connectorModule : appModule.getResourceModules()) {
+ for (ConnectorModule connectorModule : appModule.getConnectorModules()) {
setModule(connectorModule);
try {
deploy(connectorModule);
@@ -1285,7 +1285,12 @@ public class AnnotationDeployer implemen
* @WebService
* @WebServiceProvider
*/
- processSessionInterfaces(sessionBean, clazz, ejbModule);
+// boolean strict = getProperty(ejbModule, STRICT_INTERFACE_DECLARATION, false + "").equalsIgnoreCase("true");
+ if (false) {
+ processSessionInterfacesStrict(sessionBean, clazz, ejbModule);
+ } else {
+ processSessionInterfaces(sessionBean, clazz, ejbModule);
+ }
/*
* Allow for all session bean types
@@ -1528,7 +1533,7 @@ public class AnnotationDeployer implemen
if (assemblyDescriptor.getApplicationException(exception) != null) {
mergeApplicationExceptionAnnotation(assemblyDescriptor, exception, annotation);
} else {
- logger.info("Found previously undetected application exception {} listed on a method {} with annotation {}", method, exception, annotation);
+ logger.debug("Found previously undetected application exception {0} listed on a method {1} with annotation {2}", method, exception, annotation);
assemblyDescriptor.addApplicationException(exception, annotation.rollback(), annotation.inherited());
}
}
@@ -1826,6 +1831,192 @@ public class AnnotationDeployer implemen
}
+ private void processSessionInterfacesStrict(SessionBean sessionBean, Class<?> beanClass, EjbModule ejbModule) {
+
+ ValidationContext validation = ejbModule.getValidation();
+ String ejbName = sessionBean.getEjbName();
+
+// boolean strict = getProperty(ejbModule, STRICT_INTERFACE_DECLARATION, false + "").equalsIgnoreCase("true");
+
+ /*
+ * Collect all interfaces explicitly declared via xml.
+ * We will subtract these from the interfaces implemented
+ * by the bean and do annotation scanning on the remainder.
+ */
+ List<String> descriptor = new ArrayList<String>();
+ descriptor.add(sessionBean.getHome());
+ descriptor.add(sessionBean.getRemote());
+ descriptor.add(sessionBean.getLocalHome());
+ descriptor.add(sessionBean.getLocal());
+ descriptor.addAll(sessionBean.getBusinessLocal());
+ descriptor.addAll(sessionBean.getBusinessRemote());
+ descriptor.add(sessionBean.getServiceEndpoint());
+
+ BusinessInterfaces xml = new BusinessInterfaces();
+ xml.addLocals(sessionBean.getBusinessLocal(), ejbModule.getClassLoader());
+ xml.addRemotes(sessionBean.getBusinessRemote(), ejbModule.getClassLoader());
+
+ /**
+ * Anything declared as both <business-local> and <business-remote> is invalid in strict mode
+ */
+ for (Class interfce : xml.local) {
+ if (xml.remote.contains(interfce)) {
+ validation.fail(ejbName, "xml.localRemote.conflict", interfce.getName());
+ }
+ }
+
+ /*
+ * Merge the xml declared business interfaces into the complete set
+ */
+ BusinessInterfaces all = new BusinessInterfaces();
+ all.local.addAll(xml.local);
+ all.remote.addAll(xml.remote);
+
+ BusinessInterfaces annotated = new BusinessInterfaces();
+ LinkedHashSet<Class<?>> interfaces = new LinkedHashSet<Class<?>>();
+ boolean localBean = false;
+ /*
+ * @WebService
+ * @WebServiceProvider
+ */
+ if (sessionBean.getServiceEndpoint() == null) {
+ Class defaultEndpoint = DeploymentInfo.ServiceEndpoint.class;
+
+ for (Class interfce : beanClass.getInterfaces()) {
+ if (interfce.isAnnotationPresent(WebService.class)) {
+ defaultEndpoint = interfce;
+ }
+ }
+
+ WebService webService = beanClass.getAnnotation(WebService.class);
+ if (webService != null) {
+
+ String className = webService.endpointInterface();
+
+ if (!className.equals("")) {
+ sessionBean.setServiceEndpoint(className);
+ } else {
+ sessionBean.setServiceEndpoint(defaultEndpoint.getName());
+ }
+ } else if (beanClass.isAnnotationPresent(WebServiceProvider.class)) {
+ sessionBean.setServiceEndpoint(defaultEndpoint.getName());
+ } else if (!defaultEndpoint.equals(DeploymentInfo.ServiceEndpoint.class)) {
+ sessionBean.setServiceEndpoint(defaultEndpoint.getName());
+ }
+ }
+ /*
+ * 4.9.2.1 client views are specified on the session bean class itself, not on any superclasses.
+ */
+
+ /*
+ * 4.9.7 par 5.3
+ * 4.9.8 par 1.3
+ * These interface types are not eligible to be business interfaces.
+ * java.io.Serializable
+ * java.io.Externalizable
+ * javax.ejb.*
+ */
+ for (Class<?> interfce : beanClass.getInterfaces()) {
+ String name = interfce.getName();
+ if (!name.equals("java.io.Serializable") &&
+ !name.equals("java.io.Externalizable") &&
+ !name.startsWith("javax.ejb.")) {
+ interfaces.add(interfce);
+ }
+ }
+ localBean |= beanClass.getAnnotation(LocalBean.class) != null;
+ if (beanClass.getAnnotation(Local.class) != null) {
+ annotated.local.addAll(toList(beanClass.getAnnotation(Local.class).value()));
+ }
+ if (beanClass.getAnnotation(Remote.class) != null) {
+ annotated.remote.addAll(toList(beanClass.getAnnotation(Remote.class).value()));
+ }
+
+ if (localBean) {
+ sessionBean.setLocalBean(new Empty());
+ }
+ /**
+ * 4.9.8 implied local bean
+ */
+ if (sessionBean.getLocalBean() == null
+ && beanClass.getInterfaces().length == 0
+ && annotated.local.isEmpty()
+ && annotated.remote.isEmpty()
+ && xml.local.isEmpty()
+ && xml.remote.isEmpty()
+ && sessionBean.getHome() == null
+ && sessionBean.getRemote() == null
+ && sessionBean.getLocalHome() == null
+ && sessionBean.getLocal() == null
+ && sessionBean.getServiceEndpoint() == null) {
+ sessionBean.setLocalBean(new Empty());
+ //nothing else to do...
+ return;
+ }
+ /**
+ * 4.9.7 par 5.1 single interface.
+ * Requires: not no-interface, no interface specified by @Local or @Remote on a bean class(?) and only one implemented interface.
+ */
+ if (sessionBean.getLocalBean() == null
+ && interfaces.size() == 1
+ && annotated.local.isEmpty()
+ && annotated.remote.isEmpty()
+ && xml.local.isEmpty()
+ && xml.remote.isEmpty()) {
+ Class<?> interfce = interfaces.iterator().next();
+ if (interfce.getAnnotation(Remote.class) != null) {
+ validateRemoteInterface(interfce, validation, ejbName);
+ sessionBean.getBusinessRemote().add(interfce.getName());
+ } else {
+ validateLocalInterface(interfce, validation, ejbName);
+ sessionBean.getBusinessLocal().add(interfce.getName());
+ }
+ return;
+ }
+
+ /**
+ * 4.9.7 par 5.2 and 5.5
+ * All other interfaces must be specified as local or remote on the interface or in the beans @Local/@Remote annotation
+ * (or the xml)
+ */
+ for (Class<?> interfce: interfaces) {
+ if (interfce.getAnnotation(Local.class) != null) {
+ annotated.local.add(interfce);
+ }
+ if (interfce.getAnnotation(Remote.class) != null) {
+ annotated.remote.add(interfce);
+ }
+ }
+
+ /**
+ * 4.9.7 par 5.4
+ * No interface can be both Local and Remote
+ */
+ // TODO This isn't right either, xml always wins over annotation so there can never be this mixed "some combination of xml and annotations" case
+ all.local.addAll(annotated.local);
+ all.remote.addAll(annotated.remote);
+ for (Class<?> local: all.local) {
+ if (all.remote.contains(local)) {
+ validation.fail(ejbName, "ann.localRemote.generalconflict", local);
+ }
+ }
+
+ //add to xml
+ annotated.local.removeAll(xml.local);
+ annotated.remote.removeAll(xml.remote);
+ for (Class<?> local: annotated.local) {
+ sessionBean.getBusinessLocal().add(local.getName());
+ }
+ for (Class<?> remote: annotated.remote) {
+ sessionBean.getBusinessRemote().add(remote.getName());
+ }
+ }
+
+ private List<? extends Class> toList(Class[] classes) {
+ if (classes == null) return Collections.emptyList();
+ return asList(classes);
+ }
+
private static class BusinessInterfaces {
private Set<Class> local = new LinkedHashSet<Class>();
private Set<Class> remote = new LinkedHashSet<Class>();
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java Sat Aug 21 16:58:57 2010
@@ -98,7 +98,13 @@ class AppInfoBuilder {
public AppInfo build(AppModule appModule) throws OpenEJBException {
AppInfo appInfo = new AppInfo();
appInfo.appId = appModule.getModuleId();
+ appInfo.path = appModule.getJarLocation();
+ appInfo.standaloneModule = appModule.isStandaloneModule();
+ appInfo.watchedResources.addAll(appModule.getWatchedResources());
+ if (appInfo.path == null) throw new IllegalArgumentException("AppInfo.path cannot be null");
+ if (appInfo.appId == null) throw new IllegalArgumentException("AppInfo.appId cannot be null");
+
//
// J2EE Connectors
//
@@ -143,7 +149,7 @@ class AppInfoBuilder {
ejbJarInfo.portInfos.addAll(configureWebservices(ejbModule.getWebservices()));
configureWebserviceSecurity(ejbJarInfo, ejbModule);
- ejbJarInfos.put(ejbJarInfo.jarPath, ejbJarInfo);
+ ejbJarInfos.put(ejbJarInfo.path, ejbJarInfo);
appInfo.ejbJars.add(ejbJarInfo);
@@ -196,7 +202,7 @@ class AppInfoBuilder {
});
} catch (CircularReferencesException e) {
List<List> circuits = e.getCircuits();
-
+ // TODO Seems we lost circular reference detection, or we do it elsewhere and don't need it here
}
//
@@ -213,8 +219,6 @@ class AppInfoBuilder {
//
// Final AppInfo creation
//
- appInfo.jarPath = appModule.getJarLocation();
- appInfo.watchedResources.addAll(appModule.getWatchedResources());
List<URL> additionalLibraries = appModule.getAdditionalLibraries();
for (URL url : additionalLibraries) {
File file = toFile(url);
@@ -238,7 +242,7 @@ class AppInfoBuilder {
ReportValidationResults reportValidationResults = new ReportValidationResults();
reportValidationResults.deploy(appModule);
- logger.info("config.appLoaded", appInfo.jarPath);
+ logger.info("config.appLoaded", appInfo.path);
return appInfo;
}
@@ -249,7 +253,7 @@ class AppInfoBuilder {
ClientInfo clientInfo = new ClientInfo();
clientInfo.description = applicationClient.getDescription();
clientInfo.displayName = applicationClient.getDisplayName();
- clientInfo.codebase = clientModule.getJarLocation();
+ clientInfo.path = clientModule.getJarLocation();
clientInfo.mainClass = clientModule.getMainClass();
clientInfo.localClients.addAll(clientModule.getLocalClients());
clientInfo.remoteClients.addAll(clientModule.getRemoteClients());
@@ -268,7 +272,7 @@ class AppInfoBuilder {
WebAppInfo webAppInfo = new WebAppInfo();
webAppInfo.description = webApp.getDescription();
webAppInfo.displayName = webApp.getDisplayName();
- webAppInfo.codebase = webModule.getJarLocation();
+ webAppInfo.path = webModule.getJarLocation();
webAppInfo.moduleId = webModule.getModuleId();
webAppInfo.watchedResources.addAll(webModule.getWatchedResources());
@@ -294,7 +298,7 @@ class AppInfoBuilder {
private void buildConnectorModules(AppModule appModule, AppInfo appInfo) throws OpenEJBException {
String appId = appModule.getModuleId();
- for (ConnectorModule connectorModule : appModule.getResourceModules()) {
+ for (ConnectorModule connectorModule : appModule.getConnectorModules()) {
//
// DEVELOPERS NOTE: if you change the id generation code here, you must change
// the id generation code in AutoConfig$AppResources
@@ -305,7 +309,7 @@ class AppInfoBuilder {
ConnectorInfo connectorInfo = new ConnectorInfo();
connectorInfo.description = connector.getDescription();
connectorInfo.displayName = connector.getDisplayName();
- connectorInfo.codebase = connectorModule.getJarLocation();
+ connectorInfo.path = connectorModule.getJarLocation();
connectorInfo.moduleId = connectorModule.getModuleId();
connectorInfo.watchedResources.addAll(connectorModule.getWatchedResources());
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java Sat Aug 21 16:58:57 2010
@@ -48,11 +48,32 @@ public class AppModule implements Deploy
private final Map<String,Object> altDDs = new HashMap<String,Object>();
private final String moduleId;
private final Set<String> watchedResources = new TreeSet<String>();
+ private final boolean standaloneModule;
public AppModule(ClassLoader classLoader, String jarLocation) {
- this(classLoader, jarLocation, null);
+ this(classLoader, jarLocation, null, false);
}
- public AppModule(ClassLoader classLoader, String jarLocation, Application application) {
+
+ public <T extends DeploymentModule> AppModule(T module) {
+ this(module.getClassLoader(), module.getJarLocation(), new Application(module.getModuleId()), true);
+ final Class<? extends DeploymentModule> type = module.getClass();
+
+ if (type == EjbModule.class) {
+ getEjbModules().add((EjbModule) module);
+ } else if (type == ClientModule.class) {
+ getClientModules().add((ClientModule) module);
+ } else if (type == ConnectorModule.class) {
+ getConnectorModules().add((ConnectorModule) module);
+ } else if (type == WebModule.class) {
+ getWebModules().add((WebModule) module);
+ } else if (type == PersistenceModule.class) {
+ getPersistenceModules().add((PersistenceModule) module);
+ } else {
+ throw new IllegalArgumentException("Unknown module type: " + type.getName());
+ }
+ }
+
+ public AppModule(ClassLoader classLoader, String jarLocation, Application application, boolean standaloneModule) {
this.classLoader = classLoader;
this.jarLocation = jarLocation;
this.application = application;
@@ -69,7 +90,15 @@ public class AppModule implements Deploy
} else {
this.moduleId = application.getApplicationName();
}
+ if (this.jarLocation == null) throw new IllegalArgumentException("jarLocation cannot be null");
+ if (this.moduleId == null) throw new IllegalArgumentException("moduleId cannot be null");
+
this.validation = new ValidationContext(AppModule.class, jarLocation);
+ this.standaloneModule = standaloneModule;
+ }
+
+ public boolean isStandaloneModule() {
+ return standaloneModule;
}
public ValidationContext getValidation() {
@@ -191,7 +220,7 @@ public class AppModule implements Deploy
this.cmpMappings = cmpMappings;
}
- public List<ConnectorModule> getResourceModules() {
+ public List<ConnectorModule> getConnectorModules() {
return connectorModules;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java Sat Aug 21 16:58:57 2010
@@ -19,7 +19,6 @@ package org.apache.openejb.config;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.assembler.classic.ContainerInfo;
-import org.apache.openejb.assembler.classic.InjectionInfo;
import org.apache.openejb.assembler.classic.ResourceInfo;
import org.apache.openejb.config.sys.Resource;
import org.apache.openejb.jee.ActivationConfig;
@@ -141,7 +140,7 @@ public class AutoConfig implements Dynam
for (ClientModule clientModule : appModule.getClientModules()) {
deploy(clientModule, appResources);
}
- for (ConnectorModule connectorModule : appModule.getResourceModules()) {
+ for (ConnectorModule connectorModule : appModule.getConnectorModules()) {
deploy(connectorModule);
}
for (WebModule webModule : appModule.getWebModules()) {
@@ -1627,7 +1626,7 @@ public class AutoConfig implements Dynam
// the id generation code in ConfigurationFactory.configureApplication(AppModule appModule)
//
- for (ConnectorModule connectorModule : appModule.getResourceModules()) {
+ for (ConnectorModule connectorModule : appModule.getConnectorModules()) {
Connector connector = connectorModule.getConnector();
ResourceAdapter resourceAdapter = connector.getResourceAdapter();
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Sat Aug 21 16:58:57 2010
@@ -549,7 +549,7 @@ public class ConfigurationFactory implem
public AppInfo configureApplication(ClassLoader classLoader, String id, List<File> jarFiles) throws OpenEJBException {
Application application = new Application();
application.setApplicationName(id);
- AppModule collection = new AppModule(classLoader, null, application);
+ AppModule collection = new AppModule(classLoader, id, application, false);
Map<String, Object> altDDs = collection.getAltDDs();
for (File jarFile : jarFiles) {
@@ -562,7 +562,7 @@ public class ConfigurationFactory implem
collection.getClientModules().addAll(module.getClientModules());
collection.getEjbModules().addAll(module.getEjbModules());
collection.getPersistenceModules().addAll(module.getPersistenceModules());
- collection.getResourceModules().addAll(module.getResourceModules());
+ collection.getConnectorModules().addAll(module.getConnectorModules());
collection.getWebModules().addAll(module.getWebModules());
collection.getWatchedResources().addAll(module.getWatchedResources());
@@ -618,30 +618,22 @@ public class ConfigurationFactory implem
}
public EjbJarInfo configureApplication(EjbModule ejbModule) throws OpenEJBException {
- AppModule appModule = new AppModule(ejbModule.getClassLoader(), null);
- appModule.getEjbModules().add(ejbModule);
- AppInfo appInfo = configureApplication(appModule);
+ AppInfo appInfo = configureApplication(new AppModule(ejbModule));
return appInfo.ejbJars.get(0);
}
public ClientInfo configureApplication(ClientModule clientModule) throws OpenEJBException {
- AppModule appModule = new AppModule(clientModule.getClassLoader(), null);
- appModule.getClientModules().add(clientModule);
- AppInfo appInfo = configureApplication(appModule);
+ AppInfo appInfo = configureApplication(new AppModule(clientModule));
return appInfo.clients.get(0);
}
public ConnectorInfo configureApplication(ConnectorModule connectorModule) throws OpenEJBException {
- AppModule appModule = new AppModule(connectorModule.getClassLoader(), null);
- appModule.getResourceModules().add(connectorModule);
- AppInfo appInfo = configureApplication(appModule);
+ AppInfo appInfo = configureApplication(new AppModule(connectorModule));
return appInfo.connectors.get(0);
}
public WebAppInfo configureApplication(WebModule webModule) throws OpenEJBException {
- AppModule appModule = new AppModule(webModule.getClassLoader(), null);
- appModule.getWebModules().add(webModule);
- AppInfo appInfo = configureApplication(appModule);
+ AppInfo appInfo = configureApplication(new AppModule(webModule));
return appInfo.webApps.get(0);
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Deploy.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Deploy.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Deploy.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Deploy.java Sat Aug 21 16:58:57 2010
@@ -195,7 +195,7 @@ public class Deploy {
}
AppInfo appInfo = deployer.deploy(location);
- System.out.println(messages.format("cmd.deploy.successful", path, appInfo.jarPath));
+ System.out.println(messages.format("cmd.deploy.successful", path, appInfo.path));
if (line.hasOption("quiet")) {
continue;
@@ -222,7 +222,7 @@ public class Deploy {
if (!delete(destFile)){
System.out.println(messages.format("cmd.deploy.cantDelete.deploy", destFile.getAbsolutePath()));
}
- } catch (OpenEJBException e) {
+ } catch (Throwable e) {
System.out.println(messages.format("cmd.deploy.failed", path));
e.printStackTrace(System.out);
exitCode++;
@@ -253,10 +253,10 @@ public class Deploy {
}
private static void print(AppInfo appInfo) {
- System.out.println("App(id=" + appInfo.jarPath + ")");
+ System.out.println("App(id=" + appInfo.path + ")");
for (EjbJarInfo info : appInfo.ejbJars) {
- System.out.println(" EjbJar(id=" + info.moduleId + ", path=" + info.jarPath + ")");
+ System.out.println(" EjbJar(id=" + info.moduleId + ", path=" + info.path + ")");
for (EnterpriseBeanInfo beanInfo : info.enterpriseBeans) {
System.out.println(" Ejb(ejb-name=" + beanInfo.ejbName + ", id=" + beanInfo.ejbDeploymentId + ")");
for (String name : beanInfo.jndiNames) {
@@ -270,15 +270,15 @@ public class Deploy {
System.out.println("");
}
for (ClientInfo clientInfo : appInfo.clients) {
- System.out.println(" Client(main-class=" + clientInfo.mainClass + ", id=" + clientInfo.moduleId + ", path=" + clientInfo.codebase + ")");
+ System.out.println(" Client(main-class=" + clientInfo.mainClass + ", id=" + clientInfo.moduleId + ", path=" + clientInfo.path + ")");
System.out.println("");
}
for (ConnectorInfo connectorInfo : appInfo.connectors) {
- System.out.println(" Connector(id=" + connectorInfo.moduleId + ", path=" + connectorInfo.codebase + ")");
+ System.out.println(" Connector(id=" + connectorInfo.moduleId + ", path=" + connectorInfo.path + ")");
System.out.println("");
}
for (WebAppInfo webAppInfo : appInfo.webApps) {
- System.out.println(" WebApp(context-root=" + webAppInfo.contextRoot + ", id=" + webAppInfo.moduleId + ", path=" + webAppInfo.codebase + ")");
+ System.out.println(" WebApp(context-root=" + webAppInfo.contextRoot + ", id=" + webAppInfo.moduleId + ", path=" + webAppInfo.path + ")");
System.out.println("");
}
for (PersistenceUnitInfo persistenceUnitInfo : appInfo.persistenceUnits) {
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Sat Aug 21 16:58:57 2010
@@ -145,8 +145,7 @@ public class DeploymentLoader {
EjbModule ejbModule = createEjbModule(baseUrl, jarPath, classLoader, null);
// wrap the EJB Module with an Application Module
- AppModule appModule = new AppModule(ejbModule.getClassLoader(), null);
- appModule.getEjbModules().add(ejbModule);
+ AppModule appModule = new AppModule(ejbModule);
// Persistence Units
addPersistenceUnits(appModule, baseUrl);
@@ -157,31 +156,27 @@ public class DeploymentLoader {
ClientModule clientModule = createClientModule(baseUrl, jarLocation, OpenEJB.class.getClassLoader(), null);
// Wrap the resource module with an Application Module
- AppModule appModule = new AppModule(clientModule.getClassLoader(), null);
- appModule.getClientModules().add(clientModule);
-
- return appModule;
+ return new AppModule(clientModule);
} else if (ConnectorModule.class.equals(moduleClass)) {
String jarLocation = URLs.toFilePath(baseUrl);
ConnectorModule connectorModule = createConnectorModule(jarLocation, jarLocation, OpenEJB.class.getClassLoader(), null);
// Wrap the resource module with an Application Module
- AppModule appModule = new AppModule(connectorModule.getClassLoader(), null);
- appModule.getResourceModules().add(connectorModule);
-
- return appModule;
+ return new AppModule(connectorModule);
} else if (WebModule.class.equals(moduleClass)) {
- String moduleId = toFile(baseUrl).getName();
+ final File file = toFile(baseUrl);
+ String moduleId = file.getName();
String warPath = URLs.toFilePath(baseUrl);
- AppModule appModule = new AppModule(OpenEJB.class.getClassLoader(), null);
+ AppModule appModule = new AppModule(OpenEJB.class.getClassLoader(), file.getAbsolutePath());
addWebModule(appModule, warPath, OpenEJB.class.getClassLoader(), null, moduleId);
return appModule;
} else if (PersistenceModule.class.equals(moduleClass)) {
+ String jarLocation = URLs.toFilePath(baseUrl);
ClassLoader classLoader = ClassLoaderUtil.createTempClassLoader(jarPath, new URL[]{baseUrl}, OpenEJB.class.getClassLoader());
// wrap the EJB Module with an Application Module
- AppModule appModule = new AppModule(classLoader, null);
+ AppModule appModule = new AppModule(classLoader, jarLocation);
// Persistence Units
addPersistenceUnits(appModule, baseUrl);
@@ -348,7 +343,7 @@ public class DeploymentLoader {
// Create the AppModule and all nested module objects
//
- AppModule appModule = new AppModule(appClassLoader, appId, application);
+ AppModule appModule = new AppModule(appClassLoader, appId, application, false);
appModule.getAdditionalLibraries().addAll(extraLibs);
appModule.getAltDDs().putAll(appDescriptors);
appModule.getWatchedResources().add(appId);
@@ -392,7 +387,7 @@ public class DeploymentLoader {
URL rarUrl = resouceModules.get(moduleName);
ConnectorModule connectorModule = createConnectorModule(appId, URLs.toFilePath(rarUrl), appClassLoader, moduleName);
- appModule.getResourceModules().add(connectorModule);
+ appModule.getConnectorModules().add(connectorModule);
} catch (OpenEJBException e) {
logger.error("Unable to load RAR: " + appId + ", module: " + moduleName + ". Exception: " + e.getMessage(), e);
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java Sat Aug 21 16:58:57 2010
@@ -134,10 +134,10 @@ public class EjbJarInfoBuilder {
Map<String, EnterpriseBean> items = new HashMap<String, EnterpriseBean>();
EjbJarInfo ejbJar = new EjbJarInfo();
- ejbJar.jarPath = jar.getJarLocation();
+ ejbJar.path = jar.getJarLocation();
ejbJar.moduleId = jar.getModuleId();
if (ejbJar.moduleId == null) {
- ejbJar.moduleId = new File(ejbJar.jarPath).getName().replaceFirst(".jar$","");
+ ejbJar.moduleId = new File(ejbJar.path).getName().replaceFirst(".jar$","");
}
ejbJar.watchedResources.addAll(jar.getWatchedResources());
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java Sat Aug 21 16:58:57 2010
@@ -80,7 +80,7 @@ public class ReadDescriptors implements
readAppClient(clientModule, appModule);
}
- for (ConnectorModule connectorModule : appModule.getResourceModules()) {
+ for (ConnectorModule connectorModule : appModule.getConnectorModules()) {
readConnector(connectorModule, appModule);
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/VmDeploymentManager.java Sat Aug 21 16:58:57 2010
@@ -169,48 +169,48 @@ public class VmDeploymentManager impleme
InfoObject infoObject = infos.get(0);
if (infoObject instanceof ClientInfo) {
ClientInfo clientInfo = (ClientInfo) infoObject;
- if (appInfo.jarPath.equals(clientInfo.codebase)) {
+ if (appInfo.path.equals(clientInfo.path)) {
// are client modules allowed
if (allowedModuleType != null && !allowedModuleType.equals(ModuleType.CAR)) {
return null;
}
- if (clientInfo.moduleId == appInfo.jarPath) {
+ if (clientInfo.moduleId == appInfo.path) {
return new TargetModuleIDImpl(DEFAULT_TARGET, clientInfo.moduleId);
}
}
}
if (infoObject instanceof EjbJarInfo) {
EjbJarInfo ejbJarInfo = (EjbJarInfo) infoObject;
- if (appInfo.jarPath.equals(ejbJarInfo.jarPath)) {
+ if (appInfo.path.equals(ejbJarInfo.path)) {
// are ejb modules allowed
if (allowedModuleType != null && !allowedModuleType.equals(ModuleType.EJB)) {
return null;
}
- if (ejbJarInfo.moduleId == appInfo.jarPath) {
+ if (ejbJarInfo.moduleId == appInfo.path) {
return new TargetModuleIDImpl(DEFAULT_TARGET, ejbJarInfo.moduleId);
}
}
}
if (infoObject instanceof ConnectorInfo) {
ConnectorInfo connectorInfo = (ConnectorInfo) infoObject;
- if (appInfo.jarPath.equals(connectorInfo.codebase)) {
+ if (appInfo.path.equals(connectorInfo.path)) {
// are connector modules allowed
if (allowedModuleType != null && !allowedModuleType.equals(ModuleType.RAR)) {
return null;
}
- if (connectorInfo.moduleId == appInfo.jarPath) {
+ if (connectorInfo.moduleId == appInfo.path) {
return new TargetModuleIDImpl(DEFAULT_TARGET, connectorInfo.moduleId);
}
}
}
if (infoObject instanceof WebAppInfo) {
WebAppInfo webAppInfo = (WebAppInfo) infoObject;
- if (appInfo.jarPath.equals(webAppInfo.codebase)) {
+ if (appInfo.path.equals(webAppInfo.path)) {
// are web app modules allowed
if (allowedModuleType != null && !allowedModuleType.equals(ModuleType.WAR)) {
return null;
}
- if (webAppInfo.moduleId == appInfo.jarPath) {
+ if (webAppInfo.moduleId == appInfo.path) {
return new TargetModuleIDImpl(DEFAULT_TARGET, webAppInfo.moduleId); //todo web module
}
}
@@ -224,7 +224,7 @@ public class VmDeploymentManager impleme
return null;
}
- TargetModuleIDImpl earModuleId = new TargetModuleIDImpl(DEFAULT_TARGET, appInfo.jarPath);
+ TargetModuleIDImpl earModuleId = new TargetModuleIDImpl(DEFAULT_TARGET, appInfo.path);
for (ClientInfo clientInfo : appInfo.clients) {
TargetModuleIDImpl clientModuleId = new TargetModuleIDImpl(DEFAULT_TARGET, clientInfo.moduleId);
clientModuleId.setParentTargetModuleID(earModuleId);
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java Sat Aug 21 16:58:57 2010
@@ -29,13 +29,20 @@ public class AppContext extends Deployme
private final ClassLoader classLoader;
private final Context globalJndiContext;
private final Context appJndiContext;
+ private final boolean standaloneModule;
- public AppContext(String id, SystemInstance systemInstance, ClassLoader classLoader, Context globalJndiContext, Context appJndiContext) {
+ public AppContext(String id, SystemInstance systemInstance, ClassLoader classLoader, Context globalJndiContext, Context appJndiContext, boolean standaloneModule) {
super(id, systemInstance.getOptions());
this.classLoader = classLoader;
this.systemInstance = systemInstance;
this.globalJndiContext = globalJndiContext;
this.appJndiContext = appJndiContext;
+ this.standaloneModule = standaloneModule;
+ }
+
+ @Override
+ public String getId() {
+ return super.getId();
}
public ClassLoader getClassLoader() {
@@ -53,4 +60,8 @@ public class AppContext extends Deployme
public Context getGlobalJndiContext() {
return globalJndiContext;
}
+
+ public boolean isStandaloneModule() {
+ return standaloneModule;
+ }
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DefaultTimerThreadPoolAdapter.java Sat Aug 21 16:58:57 2010
@@ -57,7 +57,7 @@ public class DefaultTimerThreadPoolAdapt
}
}
- @Override
+// @Override
public int blockForAvailableThreads() {
if (threadPoolExecutorUsed) {
ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor;
@@ -75,12 +75,12 @@ public class DefaultTimerThreadPoolAdapt
}
}
- @Override
+// @Override
public void setInstanceId(String instanceId) {
this.instanceId = instanceId;
}
- @Override
+// @Override
public void setInstanceName(String instanceName) {
this.instanceName = instanceName;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties?rev=987790&r1=987789&r2=987790&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties Sat Aug 21 16:58:57 2010
@@ -297,6 +297,11 @@
2.xml.localRemote.conflict = Interface illegally declared as both <business-local> and <business-remote>: {0}
3.xml.localRemote.conflict = When declaring business interface as <business-local> in an ejb-jar.xml file, the same interface cannot be listed as <business-remote>. Revise the declaration of business interface "{0}" so that it is either local or remote, not both.
+# fail(ejbName, "xml.localRemote.conflict", interfce);
+1.ann.localRemote.generalconflict = Interface illegally declared as both local and remote in some combination of xml and annotations.
+2.ann.localRemote.generalconflict = Interface illegally declared as both local and remote in some combination of xml and annotations: {0}
+3.ann.localRemote.generalconflict = When declaring business interface as local in xml or annotations, the same interface cannot be listed as remote. Revise the declaration of business interface "{0}" so that it is either local or remote, not both.
+
# fail(ejbName, "ann.remote.noAttributes", join(", ", interfaces));
1.ann.remote.noAttributes = Ambiguous @Remote() usage on bean class
2.ann.remote.noAttributes = Ambiguous @Remote() usage on bean class. Must list interfaces explicitly in annotation.