You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by Jacek Laskowski <ja...@laskowski.net.pl> on 2009/10/29 23:00:23 UTC
Fwd: svn commit: r831104 - /openejb/trunk/sandbox/openejb-osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
Fancy implementing it? An easy way to jump stright into OSGi and
OpenEJB in one shot! The offer is valid for 2 days only.
Jacek
---------- Forwarded message ----------
From: <jl...@apache.org>
Date: Thu, Oct 29, 2009 at 10:46 PM
Subject: svn commit: r831104 -
/openejb/trunk/sandbox/openejb-osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
To: commits@openejb.apache.org
Author: jlaskowski
Date: Thu Oct 29 21:46:29 2009
New Revision: 831104
URL: http://svn.apache.org/viewvc?rev=831104&view=rev
Log:
Refactor deploy logic into its own private method and create a
boilerplate for undeploy logic with its undeploy method. Volunteers
step forward
Modified:
openejb/trunk/sandbox/openejb-osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
Modified: openejb/trunk/sandbox/openejb-osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java?rev=831104&r1=831103&r2=831104&view=diff
==============================================================================
--- openejb/trunk/sandbox/openejb-osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
(original)
+++ openejb/trunk/sandbox/openejb-osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
Thu Oct 29 21:46:29 2009
@@ -40,54 +40,72 @@
public class Deployer implements BundleListener {
public void bundleChanged(BundleEvent event) {
- int type = event.getType();
- if (type == BundleEvent.STARTED) {
- Bundle bundle = event.getBundle();
- System.out.println(String.format("[Deployer] Bundle %s
has been started", bundle.getSymbolicName()));
-
- System.out.println(String.format("[Deployer] Checking
whether it's an EJB module"));
- Enumeration<?> e = bundle.findEntries("META-INF",
"ejb-jar.xml", false);
- if (e.hasMoreElements()) {
- URL ejbJarUrl = (URL) e.nextElement();
-
- System.out.println("[Deployer] It's an EJB module: "
+ ejbJarUrl);
-
- System.out.println("[Deployer] Deploying onto OpenEJB");
-
- String location = bundle.getLocation();
- System.out.println("[Deployer] bundle location: " + location);
+ switch (event.getType()) {
+ case BundleEvent.STARTED:
+ deploy(event.getBundle());
+ break;
+ case BundleEvent.STOPPED:
+ undeploy(event.getBundle());
+ break;
+ }
+ }
+
+ private void deploy(Bundle bundle) {
+ System.out.println(String.format("[Deployer] Bundle %s has
been started", bundle.getSymbolicName()));
+
+ System.out.println(String.format("[Deployer] Checking whether
it's an EJB module"));
+ Enumeration<?> e = bundle.findEntries("META-INF",
"ejb-jar.xml", false);
+ if (e.hasMoreElements()) {
+ URL ejbJarUrl = (URL) e.nextElement();
+
+ System.out.println("[Deployer] It's an EJB module: " + ejbJarUrl);
+
+ System.out.println("[Deployer] Deploying onto OpenEJB");
+
+ String location = bundle.getLocation();
+ System.out.println("[Deployer] bundle location: " + location);
+ try {
+ File file = new File(new URL(location).getFile());
try {
- File file = new File(new URL(location).getFile());
- try {
- DeploymentLoader deploymentLoader = new
DeploymentLoader();
- AppModule appModule = deploymentLoader.load(file);
-
- ConfigurationFactory configurationFactory =
new ConfigurationFactory();
- AppInfo appInfo =
configurationFactory.configureApplication(appModule);
-
- Assembler assembler = (Assembler)
SystemInstance.get().getComponent(Assembler.class);
- System.out.println(assembler);
- System.out.println(appInfo);
- assembler.createApplication(appInfo);
-
- System.out.println("[Deployer] Application
deployed: " + appInfo.jarPath);
-
- registerService(event.getBundle(), appInfo);
-
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- } catch (Exception ex1) {
- ex1.printStackTrace();
- }
+ DeploymentLoader deploymentLoader = new DeploymentLoader();
+ AppModule appModule = deploymentLoader.load(file);
+
+ ConfigurationFactory configurationFactory = new
ConfigurationFactory();
+ AppInfo appInfo =
configurationFactory.configureApplication(appModule);
+
+ Assembler assembler = (Assembler)
SystemInstance.get().getComponent(Assembler.class);
+ System.out.println(assembler);
+ System.out.println(appInfo);
+ assembler.createApplication(appInfo);
+
+ System.out.println("[Deployer] Application
deployed: " + appInfo.jarPath);
+ registerService(bundle, appInfo);
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ } catch (Exception ex1) {
+ ex1.printStackTrace();
}
+
}
}
+ private void undeploy(Bundle bundle) {
+ System.out.println(String.format("[Deployer] Bundle %s has
been stopped", bundle.getSymbolicName()));
+
+ // Let's others finish what needs to be here
+ // It should leave openejb in the state as if the ejb had not
been deployed at all
+
+ // Step 1. Check whether it's an ejb (cf. deploy method above)
+
+ // Step 2. Unregister a service (cf. deploy method above)
+ }
+
/**
* Register OSGi Service for EJB so calling the service will
actually call the EJB
- *
+ *
* @param bundle
* @param appInfo
*/
@@ -97,8 +115,11 @@
for (EjbJarInfo ejbJarInfo : appInfo.ejbJars) {
for (EnterpriseBeanInfo ejbInfo : ejbJarInfo.enterpriseBeans) {
try {
-
context.registerService(ejbInfo.businessRemote.toArray(new String[0]),
bundle.loadClass(ejbInfo.ejbClass).newInstance(), new Properties());
- System.out.println(String.format("[Deployer]
Service object %s registered under the class names: %s",
ejbInfo.ejbClass, ejbInfo.businessRemote));
+
context.registerService(ejbInfo.businessRemote.toArray(new String[0]),
bundle.loadClass(
+ ejbInfo.ejbClass).newInstance(), new Properties());
+ System.out.println(String.format(
+ "[Deployer] Service object %s registered
under the class names: %s", ejbInfo.ejbClass,
+ ejbInfo.businessRemote));
} catch (Exception e) {
e.printStackTrace();
}
--
Jacek Laskowski
Notatnik Projektanta Java EE - http://www.JacekLaskowski.pl