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 2007/01/16 11:35:16 UTC
svn commit: r496654 - in
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb:
alt/config/ assembler/classic/
Author: dblevins
Date: Tue Jan 16 02:35:13 2007
New Revision: 496654
URL: http://svn.apache.org/viewvc?view=rev&rev=496654
Log:
Removed references to the *.sys.Openejb class in AutoDeployer and AutoConfigAndDeploy
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoDeployer.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarUtils.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java?view=diff&rev=496654&r1=496653&r2=496654
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java Tue Jan 16 02:35:13 2007
@@ -17,35 +17,32 @@
*/
package org.apache.openejb.alt.config;
-import org.apache.openejb.alt.config.sys.Openejb;
-import org.apache.openejb.alt.config.sys.Container;
-import org.apache.openejb.alt.config.sys.Connector;
-import org.apache.openejb.alt.config.ejb.OpenejbJar;
+import org.apache.openejb.OpenEJBException;
import org.apache.openejb.alt.config.ejb.EjbDeployment;
-import org.apache.openejb.alt.config.ejb.ResourceLink;
+import org.apache.openejb.alt.config.ejb.MethodParams;
+import org.apache.openejb.alt.config.ejb.OpenejbJar;
import org.apache.openejb.alt.config.ejb.Query;
import org.apache.openejb.alt.config.ejb.QueryMethod;
-import org.apache.openejb.alt.config.ejb.MethodParams;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.util.SafeToolkit;
-import org.apache.openejb.util.Messages;
-import org.apache.openejb.util.Logger;
+import org.apache.openejb.alt.config.ejb.ResourceLink;
+import org.apache.openejb.assembler.classic.ConnectorInfo;
+import org.apache.openejb.assembler.classic.ContainerInfo;
import org.apache.openejb.jee.ResourceRef;
+import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.Messages;
+import org.apache.openejb.util.SafeToolkit;
import java.lang.reflect.Method;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
public class AutoConfigAndDeploy implements DynamicDeployer {
public static Messages messages = new Messages("org.apache.openejb.util.resources");
public static Logger logger = Logger.getInstance("OpenEJB", "org.apache.openejb.util.resources");
- private final Openejb config;
+ private final ConfigurationFactory configFactory;
- public AutoConfigAndDeploy(Openejb config) {
- this.config = config;
+ public AutoConfigAndDeploy(ConfigurationFactory configFactory) {
+ this.configFactory = configFactory;
}
public void init() throws OpenEJBException {
@@ -83,26 +80,37 @@
final Bean bean = beans[i];
EjbDeployment ejbDeployment = openejbJar.getDeploymentsByEjbName().get(bean.getEjbName());
- if (ejbDeployment == null){
+ if (ejbDeployment == null) {
ejbDeployment = new EjbDeployment();
ejbDeployment.setEjbName(bean.getEjbName());
ejbDeployment.setDeploymentId(autoAssignDeploymentId(bean));
- ejbDeployment.setContainerId(autoAssignContainerId(bean));
- logger.warning("Auto-deploying ejb "+bean.getEjbName()+": EjbDeployment(deployment-id="+ejbDeployment.getDeploymentId()+", container-id="+ejbDeployment.getContainerId()+")");
+ Class<? extends ContainerInfo> containerInfoType = ConfigurationFactory.getContainerInfoType(bean.getType());
+
+ String containerId = getUsableContainer(containerInfoType);
+
+ if (containerId == null){
+ ContainerInfo containerInfo = configFactory.configureDefault(containerInfoType);
+ logger.warning("Auto-creating a container for bean " + ejbDeployment.getDeploymentId() + ": Container(type=" + bean.getType() + ", id=" + containerInfo.id + ")");
+ configFactory.install(containerInfo);
+ containerId = containerInfo.id;
+ }
+
+ ejbDeployment.setContainerId(containerId);
+
+ logger.warning("Auto-deploying ejb " + bean.getEjbName() + ": EjbDeployment(deployment-id=" + ejbDeployment.getDeploymentId() + ", container-id=" + ejbDeployment.getContainerId() + ")");
openejbJar.getEjbDeployment().add(ejbDeployment);
}
// create the container if it doesn't exist
- Map<String, Container> containerMap = getContainersById();
- if (!containerMap.containsKey(ejbDeployment.getContainerId())){
- Container container = new Container();
- container.setId(ejbDeployment.getContainerId());
- container.setCtype(bean.getType());
- logger.warning("Auto-creating a container for bean "+ejbDeployment.getDeploymentId()+": Container(type="+container.getCtype()+", id="+container.getId()+")");
- config.addContainer(container);
+ if (!configFactory.getContainerIds().contains(ejbDeployment.getContainerId())) {
+
+ ContainerInfo containerInfo = configFactory.configureDefault(ConfigurationFactory.getContainerInfoType(bean.getType()));
+ logger.warning("Auto-creating a container for bean " + ejbDeployment.getDeploymentId() + ": Container(type=" + bean.getType() + ", id=" + containerInfo.id + ")");
+ configFactory.install(containerInfo);
+
}
// check the resource refs
@@ -110,39 +118,45 @@
for (int j = 0; j < refs.length; j++) {
ResourceRef ref = refs[j];
ResourceLink link = ejbDeployment.getResourceLink(ref.getResRefName());
- if (link == null){
+ if (link == null) {
link = new ResourceLink();
- Map<String, Connector> connectorMap = getConnectorsById();
+ List<String> connectorMap = configFactory.getConnectorIds();
String resRefName = ref.getResRefName();
- Connector connector = connectorMap.get(resRefName);
- if (connector == null){
- String name = resRefName.replaceFirst(".*/","");
- connector = connectorMap.get(name);
- if (connector == null){
- connector = new Connector();
- connector.setId(name);
- logger.warning("Auto-creating a connector for res-ref-name '"+resRefName+"' in bean "+ejbDeployment.getDeploymentId()+": Connector(id="+connector.getId()+"). THERE IS LITTLE CHANCE THIS WILL WORK!");
- config.addConnector(connector);
+
+ String id = null;
+ if (!connectorMap.contains(resRefName)) {
+ String name = resRefName.replaceFirst(".*/", "");
+ if (!connectorMap.contains(name)) {
+ ConnectorInfo connectorInfo = configFactory.configureDefault(ConnectorInfo.class);
+ id = connectorInfo.id = name;
+ logger.warning("Auto-creating a connector for res-ref-name '" + resRefName + "' in bean '" + ejbDeployment.getDeploymentId() + "': Connector(id=" + id + "). THERE IS LITTLE CHANCE THIS WILL WORK!");
+ configFactory.install(connectorInfo);
}
}
- logger.warning("Auto-linking res-ref-name '"+resRefName+"' in bean "+ejbDeployment.getDeploymentId()+" to Connector(id="+connector.getId()+")");
- link.setResId(connector.getId());
+ logger.warning("Auto-linking res-ref-name '" + resRefName + "' in bean " + ejbDeployment.getDeploymentId() + " to Connector(id=" + id + ")");
+ link.setResId(id);
link.setResRefName(resRefName);
ejbDeployment.addResourceLink(link);
} else {
- Map<String, Connector> connectorMap = getConnectorsById();
- Connector connector = connectorMap.get(link.getResId());
- if (connector == null) {
- logger.error("Bad resource-link: No such connector with specified res-id: ResourceLink(res-ref-name="+link.getResRefName()+", res-id"+link.getResId()+")");
- connector = new Connector();
- connector.setId(link.getResId());
- logger.warning("Auto-creating a connector with res-id "+link.getResId()+". THERE IS LITTLE CHANCE THIS WILL WORK!");
- config.addConnector(connector);
+
+ List<String> connectorMap = configFactory.getConnectorIds();
+ if (!connectorMap.contains(link.getResId())) {
+ logger.error("Bad resource-link in bean '" + ejbDeployment.getDeploymentId() + "': No such connector with specified res-id: ResourceLink(res-ref-name=" + link.getResRefName() + ", res-id" + link.getResId() + ")");
+
+ String id = null;
+ if (connectorMap.size() > 0) {
+ id = connectorMap.get(0);
+ } else {
+ ConnectorInfo connectorInfo = configFactory.configureDefault(ConnectorInfo.class);
+ id = connectorInfo.id;
+ logger.warning("Auto-creating a connector with res-id " + link.getResId() + " for bean '"+ejbDeployment.getDeploymentId()+"'. THERE IS LITTLE CHANCE THIS WILL WORK!");
+ configFactory.install(connectorInfo);
+ }
}
}
}
- if (bean.getType().equals("CMP_ENTITY") && ((EntityBean)bean).getCmpVersion() == 1 ) {
+ if (bean.getType().equals("CMP_ENTITY") && ((EntityBean) bean).getCmpVersion() == 1) {
List<Query> queries = ejbDeployment.getQuery();
if (bean.getHome() != null) {
Class interfce = loadClass(bean.getHome(), classLoader, jarLocation);
@@ -150,7 +164,7 @@
for (Query query : queries) {
finderMethods.remove(new Key(query));
}
- if (finderMethods.size() != 0){
+ if (finderMethods.size() != 0) {
throw new OpenEJBException("CMP 1.1 Beans with finder methods cannot be autodeployed; finder methods require OQL Select statements which cannot be generated accurately.");
}
}
@@ -160,7 +174,7 @@
for (Query query : queries) {
finderMethods.remove(new Key(query));
}
- if (finderMethods.size() != 0){
+ if (finderMethods.size() != 0) {
throw new OpenEJBException("CMP 1.1 Beans with finder methods cannot be autodeployed; finder methods require OQL Select statements which cannot be generated accurately.");
}
}
@@ -188,38 +202,20 @@
}
MethodParams mp = qmethod.getMethodParams();
int length = method.getParameterTypes().length;
- if ( (mp == null && length != 0) || mp == null || mp.getMethodParam().size() != length) {
+ if ((mp == null && length != 0) || mp == null || mp.getMethodParam().size() != length) {
return false;
}
List<String> params = mp.getMethodParam();
for (int i = 0; i < method.getParameterTypes().length; i++) {
Class<?> type = method.getParameterTypes()[i];
- if (!type.getName().equals(params.get(i))){
+ if (!type.getName().equals(params.get(i))) {
return false;
}
}
return true;
}
}
- private Map<String, Connector> getConnectorsById() {
- Connector[] connectorList = config.getConnector();
- Map<String,Connector> connectorMap = new HashMap();
- for (int k = 0; k < connectorList.length; k++) {
- Connector connector = connectorList[k];
- connectorMap.put(connector.getId(), connector);
- }
- return connectorMap;
- }
-
- private Map<String, Container> getContainersById() {
- Container[] containerList = config.getContainer();
- Map<String,Container> containerMap = new HashMap();
- for (int j = 0; j < containerList.length; j++) {
- Container container = containerList[j];
- containerMap.put(container.getId(), container);
- }
- return containerMap;
- }
+
private Class loadClass(String className, ClassLoader classLoader, String jarLocation) throws OpenEJBException {
try {
@@ -241,30 +237,17 @@
return finderMethods;
}
- private String autoAssignDeploymentId(Bean bean){
+ private String autoAssignDeploymentId(Bean bean) {
return bean.getEjbName();
}
- private String autoAssignContainerId(Bean bean) {
- Container[] usableContainers = EjbJarUtils.getUsableContainers(config.getContainer(), bean);
-
- if (usableContainers != null && usableContainers.length > 0){
- return usableContainers[0].getId();
- } else {
- String type = bean.getType();
- if (type.equals(Bean.BMP_ENTITY)){
- return ProviderDefaults.DEFAULT_BMP_CONTAINER;
- } else if (type.equals(Bean.CMP_ENTITY)){
- return ProviderDefaults.DEFAULT_CMP_CONTAINER;
- } else if (type.equals(Bean.STATEFUL)){
- return ProviderDefaults.DEFAULT_STATEFUL_CONTAINER;
- } else if (type.equals(Bean.STATELESS)){
- return ProviderDefaults.DEFAULT_STATELESS_CONTAINER;
- } else if (type.equals(Bean.MESSAGE)){
- return ProviderDefaults.DEFAULT_MDB_CONTAINER;
+ private String getUsableContainer(Class<? extends ContainerInfo> containerInfoType) {
+ for (ContainerInfo containerInfo : configFactory.getContainerInfos()) {
+ if (containerInfo.getClass().equals(containerInfoType)){
+ return containerInfo.id;
}
-
- throw new IllegalStateException("Unknown bean type "+type);
}
+
+ return null;
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoDeployer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoDeployer.java?view=diff&rev=496654&r1=496653&r2=496654
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoDeployer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoDeployer.java Tue Jan 16 02:35:13 2007
@@ -22,28 +22,23 @@
import org.apache.openejb.jee.ResourceRef;
import org.apache.openejb.jee.ApplicationClient;
import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.assembler.classic.ContainerInfo;
import org.apache.openejb.alt.config.ejb.EjbDeployment;
import org.apache.openejb.alt.config.ejb.OpenejbJar;
import org.apache.openejb.alt.config.ejb.ResourceLink;
-import org.apache.openejb.alt.config.sys.Connector;
-import org.apache.openejb.alt.config.sys.Container;
-import org.apache.openejb.alt.config.sys.Openejb;
import org.apache.openejb.util.SafeToolkit;
public class AutoDeployer implements DynamicDeployer {
- private Container[] containers;
- private Connector[] resources;
-// private ClassLoader classLoader;
-// private String jarLocation;
-// private String moduleId;
+ private List<ContainerInfo> containers;
+ private List<String> resources;
- public AutoDeployer(Openejb config) {
+ public AutoDeployer(ConfigurationFactory config) {
/* Load container list */
- this.containers = config.getContainer();
+ this.containers = config.getContainerInfos();
/* Load resource list */
- this.resources = config.getConnector();
+ this.resources = config.getConnectorIds();
}
public void init() throws OpenEJBException {
@@ -147,20 +142,31 @@
}
private String autoAssignContainerId(Bean bean) throws OpenEJBException {
- Container[] cs = getUsableContainers(bean);
+ Class<? extends ContainerInfo> containerInfoType = ConfigurationFactory.getContainerInfoType(bean.getType());
- if (cs.length == 0) {
+ String containerId = getUsableContainer(containerInfoType);
+
+ if (containerId == null) {
throw new OpenEJBException("A container of type " + bean.getType() + " must be declared in the configuration file.");
}
- return cs[0].getId();
+ return containerId;
}
+ private String getUsableContainer(Class<? extends ContainerInfo> containerInfoType) {
+ for (ContainerInfo containerInfo : containers) {
+ if (containerInfo.getClass().equals(containerInfoType)){
+ return containerInfo.id;
+ }
+ }
+
+ return null;
+ }
private ResourceLink autoAssingResourceRef(ResourceRef ref) throws OpenEJBException {
- if (resources.length == 0) {
+ if (resources.size() == 0) {
throw new OpenEJBException("A Connector must be declared in the configuration file to satisfy the resource-ref " + ref.getResRefName());
}
- String id = resources[0].getId();
+ String id = resources.get(0);
ref.setResLink(id);
ResourceLink link = new ResourceLink();
link.setResRefName(ref.getResRefName());
@@ -168,7 +174,4 @@
return link;
}
- private Container[] getUsableContainers(Bean bean) {
- return EjbJarUtils.getUsableContainers(containers, bean);
- }
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java?view=diff&rev=496654&r1=496653&r2=496654
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java Tue Jan 16 02:35:13 2007
@@ -39,7 +39,6 @@
import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
import org.apache.openejb.assembler.classic.FacilitiesInfo;
import org.apache.openejb.assembler.classic.JndiContextInfo;
-import org.apache.openejb.assembler.classic.ManagedConnectionFactoryInfo;
import org.apache.openejb.assembler.classic.MdbContainerInfo;
import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
import org.apache.openejb.assembler.classic.OpenEjbConfigurationFactory;
@@ -49,6 +48,7 @@
import org.apache.openejb.assembler.classic.StatefulSessionContainerInfo;
import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
import org.apache.openejb.assembler.classic.TransactionServiceInfo;
+import org.apache.openejb.assembler.classic.Assembler;
import org.apache.openejb.jee.ApplicationClient;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.Logger;
@@ -108,6 +108,24 @@
}
}
+ public void install(ContainerInfo serviceInfo) throws OpenEJBException {
+ if (sys != null){
+ sys.containerSystem.containers.add(serviceInfo);
+ } else {
+ Assembler assembler = SystemInstance.get().getComponent(Assembler.class);
+ assembler.createContainer(serviceInfo);
+ }
+ }
+
+ public void install(ConnectorInfo serviceInfo) throws OpenEJBException {
+ if (sys != null){
+ sys.facilities.connectors.add(serviceInfo);
+ } else {
+ Assembler assembler = SystemInstance.get().getComponent(Assembler.class);
+ assembler.createConnector(serviceInfo);
+ }
+ }
+
public OpenEjbConfiguration getOpenEjbConfiguration() throws OpenEJBException {
if (configLocation != null) {
@@ -116,7 +134,20 @@
openejb = new Openejb();
}
- deployer = getDeployer(openejb);
+ sys = new OpenEjbConfiguration();
+ sys.containerSystem = new ContainerSystemInfo();
+ sys.facilities = new FacilitiesInfo();
+
+
+ initJndiProviders(openejb, sys.facilities);
+ initSecutityService(openejb, sys.facilities);
+ initTransactionService(openejb, sys.facilities);
+ initConnectors(openejb, sys.facilities);
+ initConnectionManagers(openejb, sys.facilities);
+ initProxyFactory(openejb, sys.facilities);
+ initContainerInfos(openejb);
+
+ deployer = getDeployer();
List<String> jarList = DeploymentsResolver.resolveAppLocations(openejb.getDeployments());
@@ -130,42 +161,24 @@
appInfos.add(appInfo);
}
- sys = new OpenEjbConfiguration();
- sys.containerSystem = new ContainerSystemInfo();
- sys.facilities = new FacilitiesInfo();
-
- initJndiProviders(openejb, sys.facilities);
- initTransactionService(openejb, sys.facilities);
- initConnectors(openejb, sys.facilities);
- initConnectionManagers(openejb, sys.facilities);
- initProxyFactory(openejb, sys.facilities);
-
- initContainerInfos(openejb);
sys.containerSystem.containers.addAll(containers);
sys.containerSystem.applications.addAll(appInfos);
-// SecurityRoleInfo defaultRole = new SecurityRoleInfo();
-// defaultRole.description = "The role applied to recurity references that are not linked.";
-// defaultRole.roleName = EjbJarInfoBuilder.DEFAULT_SECURITY_ROLE;
-// ejbJarInfoBuilder.getSecurityRoleInfos().add(defaultRole);
-
- initSecutityService(openejb, sys.facilities);
-
return sys;
}
- private DynamicDeployer getDeployer(Openejb openejb) {
+ private DynamicDeployer getDeployer() {
DynamicDeployer deployer;
// TODO: Create some way to enable one versus the other
if (false) {
- deployer = new AutoDeployer(openejb);
+ deployer = new AutoDeployer(this);
} else {
- deployer = new AutoConfigAndDeploy(openejb);
+ deployer = new AutoConfigAndDeploy(this);
}
deployer = new AnnotationDeployer(deployer);
@@ -258,7 +271,7 @@
if (provider == null || provider.length < 1) return;
for (int i = 0; i < provider.length; i++) {
- JndiContextInfo info = configureService(provider[i], JndiContextInfo.class, "Default Jndi Provider", JndiProvider.class);
+ JndiContextInfo info = configureService(provider[i], JndiContextInfo.class);
facilities.remoteJndiContexts.add(info);
}
@@ -266,12 +279,12 @@
private void initSecutityService(Openejb openejb, FacilitiesInfo facilities) throws OpenEJBException {
- facilities.securityService = configureService(openejb.getSecurityService(), SecurityServiceInfo.class, DEFAULT_SECURITY_SERVICE, SecurityService.class);
+ facilities.securityService = configureService(openejb.getSecurityService(), SecurityServiceInfo.class);
}
private void initTransactionService(Openejb openejb, FacilitiesInfo facilities) throws OpenEJBException {
- facilities.transactionService = configureService(openejb.getTransactionService(), TransactionServiceInfo.class, DEFAULT_TRANSACTION_MANAGER, TransactionManager.class);
+ facilities.transactionService = configureService(openejb.getTransactionService(), TransactionServiceInfo.class);
}
@@ -284,13 +297,7 @@
for (int i = 0; i < conn.length; i++) {
- ManagedConnectionFactoryInfo info = configureService(conn[i], ManagedConnectionFactoryInfo.class, DEFAULT_JDBC_DATABASE, Connector.class);
-
- ConnectorInfo connectorInfo = new ConnectorInfo();
- connectorInfo.connectorId = info.id;
- // TODO: This should not be hardcoded
- connectorInfo.connectionManagerId = DEFAULT_LOCAL_TX_CON_MANAGER;
- connectorInfo.managedConnectionFactory = (ManagedConnectionFactoryInfo) info;
+ ConnectorInfo connectorInfo = configureService(conn[i], ConnectorInfo.class);
facilities.connectors.add(connectorInfo);
}
@@ -299,7 +306,7 @@
private void initConnectionManagers(Openejb openejb, FacilitiesInfo facilities)
throws OpenEJBException {
- ConnectionManagerInfo service = configureService(openejb.getConnectionManager(), ConnectionManagerInfo.class, DEFAULT_LOCAL_TX_CON_MANAGER, ConnectionManager.class);
+ ConnectionManagerInfo service = configureService(openejb.getConnectionManager(), ConnectionManagerInfo.class);
facilities.connectionManagers.add(service);
}
@@ -318,7 +325,7 @@
throw new RuntimeException("Unable to determine the version of your VM. No ProxyFactory Can be installed");
}
- facilities.intraVmServer = configureService(openejb.getProxyFactory(), ProxyFactoryInfo.class, defaultId, ProxyFactory.class);
+ facilities.intraVmServer = configureService(openejb.getProxyFactory(), ProxyFactoryInfo.class);
}
@@ -344,12 +351,10 @@
defaultProviders.put(TransactionServiceInfo.class, new DefaultService(DEFAULT_TRANSACTION_MANAGER, TransactionManager.class));
defaultProviders.put(ConnectionManagerInfo.class, new DefaultService(DEFAULT_LOCAL_TX_CON_MANAGER, ConnectionManager.class));
defaultProviders.put(ProxyFactoryInfo.class, new DefaultService(DEFAULT_JDK_13_PROXYFACTORY, ProxyFactory.class));
-
- // Should be connector info
- defaultProviders.put(ManagedConnectionFactoryInfo.class, new DefaultService(DEFAULT_JDBC_DATABASE, Connector.class));
+ defaultProviders.put(ConnectorInfo.class, new DefaultService(DEFAULT_JDBC_DATABASE, Connector.class));
}
- public <T extends ServiceInfo> T configureDefault(Class<? extends T> type) throws OpenEJBException {
+ protected <T extends ServiceInfo> T configureDefault(Class<? extends T> type) throws OpenEJBException {
DefaultService defaultService = defaultProviders.get(type);
Service service = null;
@@ -368,32 +373,26 @@
throw new OpenEJBException("Cannot instantiate class " + type.getName(), e);
}
- return configureService(service, info, defaultService.type.getSimpleName());
+ return configureService(service, info);
}
- public <T extends ServiceInfo> T configureService(Service service, Class<? extends T> info, String defaultId, Class type) throws OpenEJBException {
+ private <T extends ServiceInfo> T configureService(Service service, Class<? extends T> info) throws OpenEJBException {
+
if (service == null) {
return configureDefault(info);
- } else if (service.getProvider() == null) {
-
- try {
- ServiceUtils.getServiceProvider(service.getId());
- service.setProvider(service.getId());
- } catch (Exception e) {
-
- service.setProvider(defaultId);
- }
}
try {
- return configureService(service, info.newInstance(), type.getSimpleName());
+ return configureService(service, info.newInstance());
} catch (Exception e) {
throw new OpenEJBException("Cannot instantiate class " + e);
}
}
- private <T extends ServiceInfo>T configureService(Service service, T info, String serviceType) throws OpenEJBException {
- ServiceProvider provider = ServiceUtils.getServiceProvider(service.getProvider());
+ private <T extends ServiceInfo>T configureService(Service service, T info) throws OpenEJBException {
+ String serviceType = service.getClass().getSimpleName();
+ String providerId = (service.getProvider() != null) ? service.getProvider() : service.getId();
+ ServiceProvider provider = ServiceUtils.getServiceProvider(providerId);
Properties properties = ServiceUtils.assemblePropertiesFor(serviceType, service.getId(), service.getContent(), configLocation, provider);
if (!provider.getProviderType().equals(serviceType)) {
@@ -409,51 +408,50 @@
info.properties = properties;
info.constructorArgs.addAll(parseConstructorArgs(provider));
- String serviceId = serviceType + ":" + info.id;
- if (serviceIds.contains(serviceId)) {
- handleException("conf.0105", configLocation, info.id, serviceType);
- }
+// String serviceId = serviceType + ":" + info.id;
+// if (serviceIds.contains(serviceId)) {
+// handleException("conf.0105", configLocation, info.id, serviceType);
+// }
- serviceIds.add(serviceId);
+// serviceIds.add(serviceId);
return info;
}
+ static Map<String, Class<? extends ContainerInfo>> containerTypes = new HashMap();
+
+ static {
+ containerTypes.put(Bean.STATELESS, StatelessSessionContainerInfo.class);
+ containerTypes.put(Bean.STATEFUL, StatefulSessionContainerInfo.class);
+ containerTypes.put(Bean.BMP_ENTITY, BmpEntityContainerInfo.class);
+ containerTypes.put(Bean.CMP_ENTITY, CmpEntityContainerInfo.class);
+ containerTypes.put(Bean.CMP2_ENTITY, CmpEntityContainerInfo.class);
+ containerTypes.put(Bean.MESSAGE, MdbContainerInfo.class);
+ }
+
private void initContainerInfos(Openejb conf) throws OpenEJBException {
Container[] containers = conf.getContainer();
for (Container declaration : containers) {
- ContainerInfo info;
- String defaultId;
- if (declaration.getCtype().equals("STATELESS")) {
- defaultId = DEFAULT_STATELESS_CONTAINER;
- info = configureService(declaration, StatelessSessionContainerInfo.class, defaultId, Container.class);
- } else if (declaration.getCtype().equals("STATEFUL")) {
- defaultId = DEFAULT_STATEFUL_CONTAINER;
- info = configureService(declaration, StatefulSessionContainerInfo.class, defaultId, Container.class);
- } else if (declaration.getCtype().equals("BMP_ENTITY")) {
- defaultId = DEFAULT_BMP_CONTAINER;
- info = configureService(declaration, BmpEntityContainerInfo.class, defaultId, Container.class);
- } else if (declaration.getCtype().equals("CMP_ENTITY")) {
- defaultId = DEFAULT_CMP_CONTAINER;
- info = configureService(declaration, CmpEntityContainerInfo.class, defaultId, Container.class);
- } else if (declaration.getCtype().equals("CMP2_ENTITY")) {
- defaultId = DEFAULT_CMP2_CONTAINER;
- info = configureService(declaration, CmpEntityContainerInfo.class, defaultId, Container.class);
- } else if (declaration.getCtype().equals("MESSAGE")) {
- defaultId = DEFAULT_MDB_CONTAINER;
- info = configureService(declaration, MdbContainerInfo.class, defaultId, Container.class);
- } else {
+
+ Class<? extends ContainerInfo> infoClass = getContainerInfoType(declaration.getCtype());
+
+ if (infoClass == null) {
throw new OpenEJBException("Unrecognized contianer type " + declaration.getCtype());
}
+ ContainerInfo info = configureService(declaration, infoClass);
this.containers.add(info);
containerTable.put(info.id, info);
}
}
+ public static Class<? extends ContainerInfo> getContainerInfoType(String ctype) {
+ return containerTypes.get(ctype);
+ }
+
private List<String> parseConstructorArgs(ServiceProvider service) {
String constructor = service.getConstructor();
if (constructor == null) {
@@ -473,7 +471,7 @@
for (EnterpriseBeanInfo bean : beans) {
EjbDeployment d = (EjbDeployment) ejbds.get(bean.ejbName);
- if (!containerIds.contains(d.getContainerId())) {
+ if (!getContainerIds().contains(d.getContainerId())) {
String msg = messages.format("config.noContainerFound", d.getContainerId(), d.getEjbName());
@@ -482,6 +480,78 @@
}
bean.containerId = d.getContainerId();
}
+ }
+
+
+ protected List<String> getConnectorIds() {
+ List<String> connectorIds = new ArrayList();
+
+ OpenEjbConfiguration runningConfig = getRunningConfig();
+ for (ConnectorInfo connectorInfo : runningConfig.facilities.connectors) {
+ connectorIds.add(connectorInfo.id);
+ }
+
+ if (sys != null) {
+ for (ConnectorInfo connectorInfo : sys.facilities.connectors) {
+ connectorIds.add(connectorInfo.id);
+ }
+
+ // The only time we'd have one of these is if we were building
+ // the above sys instance
+ if (openejb != null){
+ for (Connector connector : openejb.getConnector()) {
+ connectorIds.add(connector.getId());
+ }
+ }
+ }
+ return connectorIds;
+ }
+
+ protected List<String> getContainerIds() {
+ List<String> containerIds = new ArrayList();
+
+ OpenEjbConfiguration runningConfig = getRunningConfig();
+ for (ContainerInfo containerInfo : runningConfig.containerSystem.containers) {
+ containerIds.add(containerInfo.id);
+ }
+
+ if (sys != null) {
+ for (ContainerInfo containerInfo : sys.containerSystem.containers) {
+ containerIds.add(containerInfo.id);
+ }
+
+ // The only time we'd have one of these is if we were building
+ // the above sys instance
+ if (openejb != null){
+ for (Container container : openejb.getContainer()) {
+ containerIds.add(container.getId());
+ }
+ }
+ }
+
+ return containerIds;
+ }
+
+ public List<ContainerInfo> getContainerInfos() {
+ List<ContainerInfo> containers = new ArrayList();
+
+ OpenEjbConfiguration runningConfig = getRunningConfig();
+ for (ContainerInfo containerInfo : runningConfig.containerSystem.containers) {
+ containers.add(containerInfo);
+ }
+
+ if (sys != null) {
+ for (ContainerInfo containerInfo : sys.containerSystem.containers) {
+ containers.add(containerInfo);
+ }
+ }
+ return containers;
+ }
+
+
+ private OpenEjbConfiguration getRunningConfig() {
+ OpenEjbConfiguration runningConfig = SystemInstance.get().getComponent(OpenEjbConfiguration.class);
+ return runningConfig;
}
public static void handleException(String errorCode, Object... args) throws OpenEJBException {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarUtils.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarUtils.java?view=diff&rev=496654&r1=496653&r2=496654
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarUtils.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarUtils.java Tue Jan 16 02:35:13 2007
@@ -31,6 +31,7 @@
import org.exolab.castor.util.Configuration;
import org.exolab.castor.util.LocalConfiguration;
import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.assembler.classic.ContainerInfo;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.JndiConsumer;
import org.apache.openejb.alt.config.ejb.OpenejbJar;
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?view=diff&rev=496654&r1=496653&r2=496654
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Tue Jan 16 02:35:13 2007
@@ -16,27 +16,6 @@
*/
package org.apache.openejb.assembler.classic;
-import java.io.File;
-import java.io.IOException;
-import java.lang.instrument.ClassFileTransformer;
-import java.lang.instrument.Instrumentation;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.persistence.EntityManagerFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.transaction.TransactionManager;
-import javax.transaction.TransactionSynchronizationRegistry;
-
import org.apache.openejb.Container;
import org.apache.openejb.DeploymentInfo;
import org.apache.openejb.EnvProps;
@@ -65,6 +44,27 @@
import org.apache.xbean.recipe.ObjectRecipe;
import org.apache.xbean.recipe.StaticRecipe;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.persistence.EntityManagerFactory;
+import javax.resource.spi.ConnectionManager;
+import javax.resource.spi.ManagedConnectionFactory;
+import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
+import java.io.File;
+import java.io.IOException;
+import java.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.Instrumentation;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
public class Assembler extends AssemblerTool implements org.apache.openejb.spi.Assembler {
public static final Logger logger = Logger.getInstance("OpenEJB.startup", Assembler.class.getPackage().getName());
@@ -102,6 +102,8 @@
jndiBuilder = new JndiBuilder(containerSystem.getJNDIContext());
setConfiguration(new OpenEjbConfiguration());
+
+ SystemInstance.get().setComponent(Assembler.class, this);
}
private void setConfiguration(OpenEjbConfiguration config) {
@@ -380,7 +382,7 @@
return classLoader;
}
- public void createExternalContext(JndiContextInfo contextInfo) throws OpenEJBException, NamingException {
+ public void createExternalContext(JndiContextInfo contextInfo) throws OpenEJBException {
InitialContext result;
try {
InitialContext ic = new InitialContext(contextInfo.properties);
@@ -390,13 +392,18 @@
throw new OpenEJBException("The remote JNDI EJB references for remote-jndi-contexts = " + contextInfo.id + "+ could not be resolved.", ne);
}
InitialContext cntx = result;
- containerSystem.getJNDIContext().bind("java:openejb/remote_jndi_contexts/" + contextInfo.id, cntx);
+
+ try {
+ containerSystem.getJNDIContext().bind("java:openejb/remote_jndi_contexts/" + contextInfo.id, cntx);
+ } catch (NamingException e) {
+ throw new OpenEJBException("Cannot bind " + contextInfo.serviceType + " with id " + contextInfo.id, e);
+ }
// Update the config tree
config.facilities.remoteJndiContexts.add(contextInfo);
}
- public void createContainer(ContainerInfo serviceInfo) throws OpenEJBException, NamingException {
+ public void createContainer(ContainerInfo serviceInfo) throws OpenEJBException {
ObjectRecipe serviceRecipe = new ObjectRecipe(serviceInfo.className, serviceInfo.factoryMethod, serviceInfo.constructorArgs.toArray(new String[0]), null);
serviceRecipe.setAllProperties(serviceInfo.properties);
@@ -410,7 +417,11 @@
Class interfce = serviceInterfaces.get(serviceInfo.serviceType);
checkImplementation(interfce, service.getClass(), serviceInfo.serviceType, serviceInfo.id);
- this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType + "/" + serviceInfo.id, service);
+ try {
+ this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType + "/" + serviceInfo.id, service);
+ } catch (NamingException e) {
+ throw new OpenEJBException("Cannot bind " + serviceInfo.serviceType + " with id " + serviceInfo.id, e);
+ }
SystemInstance.get().setComponent(interfce, service);
@@ -424,7 +435,7 @@
config.containerSystem.containers.add(serviceInfo);
}
- public void createProxyFactory(ProxyFactoryInfo serviceInfo) throws OpenEJBException, NamingException {
+ public void createProxyFactory(ProxyFactoryInfo serviceInfo) throws OpenEJBException {
ObjectRecipe serviceRecipe = new ObjectRecipe(serviceInfo.className, serviceInfo.factoryMethod, serviceInfo.constructorArgs.toArray(new String[0]), null);
serviceRecipe.setAllProperties(serviceInfo.properties);
@@ -437,7 +448,11 @@
ProxyManager.registerFactory(serviceInfo.id, (ProxyFactory) service);
ProxyManager.setDefaultFactory(serviceInfo.id);
- this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType + "/" + serviceInfo.id, service);
+ try {
+ this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType + "/" + serviceInfo.id, service);
+ } catch (NamingException e) {
+ throw new OpenEJBException("Cannot bind " + serviceInfo.serviceType + " with id " + serviceInfo.id, e);
+ }
SystemInstance.get().setComponent(interfce, service);
@@ -451,9 +466,8 @@
config.facilities.intraVmServer = serviceInfo;
}
- public void createConnector(ConnectorInfo conInfo) throws OpenEJBException, NamingException {
+ public void createConnector(ConnectorInfo serviceInfo) throws OpenEJBException {
- ManagedConnectionFactoryInfo serviceInfo = conInfo.managedConnectionFactory;
ObjectRecipe serviceRecipe = new ObjectRecipe(serviceInfo.className, serviceInfo.factoryMethod, serviceInfo.constructorArgs.toArray(new String[0]), null);
serviceRecipe.setAllProperties(serviceInfo.properties);
@@ -463,22 +477,26 @@
Class interfce = serviceInterfaces.get(serviceInfo.serviceType);
checkImplementation(interfce, service.getClass(), serviceInfo.serviceType, serviceInfo.id);
- ConnectionManager connectionManager = (ConnectionManager) props.get(conInfo.connectionManagerId);
+ ConnectionManager connectionManager = SystemInstance.get().getComponent(ConnectionManager.class);
if (connectionManager == null) {
- throw new RuntimeException("Invalid connection manager specified for connector identity = " + conInfo.connectorId);
+ throw new RuntimeException("Invalid connection manager specified for connector identity = " + serviceInfo.id);
}
ManagedConnectionFactory managedConnectionFactory = (ManagedConnectionFactory) service;
ConnectorReference reference = new ConnectorReference(connectionManager, managedConnectionFactory);
- containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType + "/" + conInfo.connectorId, reference);
+ try {
+ containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType + "/" + serviceInfo.id, reference);
+ } catch (NamingException e) {
+ throw new OpenEJBException("Cannot bind " + serviceInfo.serviceType + " with id " + serviceInfo.id, e);
+ }
// Update the config tree
- config.facilities.connectors.add(conInfo);
+ config.facilities.connectors.add(serviceInfo);
}
- public void createConnectionManager(ConnectionManagerInfo serviceInfo) throws OpenEJBException, java.lang.reflect.InvocationTargetException, IllegalAccessException, NoSuchMethodException, NamingException {
+ public void createConnectionManager(ConnectionManagerInfo serviceInfo) throws OpenEJBException {
ObjectRecipe serviceRecipe = new ObjectRecipe(serviceInfo.className, serviceInfo.factoryMethod, serviceInfo.constructorArgs.toArray(new String[0]), null);
serviceRecipe.setAllProperties(serviceInfo.properties);
@@ -491,7 +509,11 @@
Class interfce = serviceInterfaces.get(serviceInfo.serviceType);
checkImplementation(interfce, service.getClass(), serviceInfo.serviceType, serviceInfo.id);
- this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType + "/" + serviceInfo.id, service);
+ try {
+ this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType + "/" + serviceInfo.id, service);
+ } catch (NamingException e) {
+ throw new OpenEJBException("Cannot bind " + serviceInfo.serviceType + " with id " + serviceInfo.id, e);
+ }
SystemInstance.get().setComponent(interfce, service);
@@ -505,7 +527,7 @@
config.facilities.connectionManagers.add(serviceInfo);
}
- public void createSecurityService(SecurityServiceInfo serviceInfo) throws Exception {
+ public void createSecurityService(SecurityServiceInfo serviceInfo) throws OpenEJBException {
ObjectRecipe serviceRecipe = new ObjectRecipe(serviceInfo.className, serviceInfo.factoryMethod, serviceInfo.constructorArgs.toArray(new String[0]), null);
serviceRecipe.setAllProperties(serviceInfo.properties);
@@ -515,7 +537,11 @@
Class interfce = serviceInterfaces.get(serviceInfo.serviceType);
checkImplementation(interfce, service.getClass(), serviceInfo.serviceType, serviceInfo.id);
- this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType, service);
+ try {
+ this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType, service);
+ } catch (NamingException e) {
+ throw new OpenEJBException("Cannot bind " + serviceInfo.serviceType + " with id " + serviceInfo.id, e);
+ }
SystemInstance.get().setComponent(interfce, service);
@@ -531,7 +557,7 @@
config.facilities.securityService = serviceInfo;
}
- public void createTransactionManager(TransactionServiceInfo serviceInfo) throws NamingException, OpenEJBException {
+ public void createTransactionManager(TransactionServiceInfo serviceInfo) throws OpenEJBException {
ObjectRecipe serviceRecipe = new ObjectRecipe(serviceInfo.className, serviceInfo.factoryMethod, serviceInfo.constructorArgs.toArray(new String[0]), null);
serviceRecipe.setAllProperties(serviceInfo.properties);
@@ -541,7 +567,11 @@
Class interfce = serviceInterfaces.get(serviceInfo.serviceType);
checkImplementation(interfce, service.getClass(), serviceInfo.serviceType, serviceInfo.id);
- this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType, service);
+ try {
+ this.containerSystem.getJNDIContext().bind("java:openejb/" + serviceInfo.serviceType, service);
+ } catch (NamingException e) {
+ throw new OpenEJBException("Cannot bind " + serviceInfo.serviceType + " with id " + serviceInfo.id, e);
+ }
SystemInstance.get().setComponent(interfce, service);
@@ -559,7 +589,7 @@
// todo find a better place for this
// TransactionSynchronizationRegistry
- TransactionSynchronizationRegistry synchronizationRegistry ;
+ TransactionSynchronizationRegistry synchronizationRegistry;
if (transactionManager instanceof TransactionSynchronizationRegistry) {
synchronizationRegistry = (TransactionSynchronizationRegistry) transactionManager;
} else {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java?view=diff&rev=496654&r1=496653&r2=496654
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ConnectorInfo.java Tue Jan 16 02:35:13 2007
@@ -16,9 +16,6 @@
*/
package org.apache.openejb.assembler.classic;
-public class ConnectorInfo extends InfoObject {
+public class ConnectorInfo extends ServiceInfo {
- public String connectorId;
- public String connectionManagerId;
- public ManagedConnectionFactoryInfo managedConnectionFactory;
}