openejb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jacek Laskowski <ja...@laskowski.net.pl>
Subject For adventurous - part 2: deployment and use of EJBs in OSGified OpenEJB runs fine
Date Wed, 28 Oct 2009 18:01:17 GMT
Hi,

I moved on to handle deploying ejbs to osgified openejb and see if I
could access it from a bundle. I couldn't even think of it and how
simple it could be, but believe it or not it works now! You can deploy
them and access from bundles.

The idea is to deploy a ejb and expose business interfaces as osgi
services. In fact, osgi services are not that different from the way
application servers handle ejbs. That's exactly the same. It's just a
separation of your interface and implementation so the only dependency
of a bundlized ejb client is to import ejb interfaces. Nothing unusual
in Java EE and so is in OSGi.

So, now the set of the required bundles is as follows:

[   0] [Active     ] [    0] System Bundle
[   1] [Active     ] [    1]
file:/c:/openejb-osgi/felix-framework-2.0.1/bundle/org.apache.felix.bundlerepository-1.4.2.jar
[   2] [Active     ] [    1]
file:/c:/openejb-osgi/felix-framework-2.0.1/bundle/org.apache.felix.shell-1.4.1.jar
[   3] [Active     ] [    1]
file:/c:/openejb-osgi/felix-framework-2.0.1/bundle/org.apache.felix.shell.tui-1.4.1.jar
[   4] [Active     ] [    1]
file:C:/.m2/org/apache/openejb/openejb-core/3.1.2-SNAPSHOT/openejb-core-3.1.2-SNAPSHOT.jar
[   5] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-annotation_1.0_spec/1.1.1/geronimo-annotation_1.0_spec-1.1.1.jar
[   7] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-jta_1.1_spec/1.1.1/geronimo-jta_1.1_spec-1.1.1.jar
[   8] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-interceptor_3.0_spec/1.0.1/geronimo-interceptor_3.0_spec-1.0.1.jar
[   9] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-javamail_1.4_spec/1.6/geronimo-javamail_1.4_spec-1.6.jar
[  10] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-j2ee-management_1.1_spec/1.0.1/geronimo-j2ee-management_1.1_spec-1.0.1.jar
[  11] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-jpa_3.0_spec/1.1.1/geronimo-jpa_3.0_spec-1.1.1.jar
[  12] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-j2ee-connector_1.5_spec/2.0.0/geronimo-j2ee-connector_1.5_spec-2.0.0.jar
[  13] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-jacc_1.1_spec/1.0.2/geronimo-jacc_1.1_spec-1.0.2.jar
[  14] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.wsdl4j/1.6.1_1/org.apache.servicemix.bundles.wsdl4j-1.6.1_1.jar
[  16] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/ops4j/pax/logging/pax-logging-api/1.4/pax-logging-api-1.4.jar
[  17] [Resolved   ] [    1]
http://download.eclipse.org/tools/orbit/downloads/drops/R20090825191606/bundles/org.apache.commons.cli_1.0.0.v20080604-1500.jar
[  18] [Resolved   ] [    1]
http://download.eclipse.org/tools/orbit/downloads/drops/R20090825191606/bundles/org.apache.commons.lang_2.4.0.v20081016-1030.jar
[  19] [Resolved   ] [    1]
http://download.eclipse.org/tools/orbit/downloads/drops/R20090825191606/bundles/org.apache.commons.logging_1.1.1.v200904062255.jar
[  20] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/components/geronimo-connector/2.1.3/geronimo-connector-2.1.3.jar
[  21] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/components/geronimo-transaction/2.1.3/geronimo-transaction-2.1.3.jar
[  22] [Resolved   ] [    1]
file:C:\.m2\org\apache\openejb\openejb-api\3.1.2-SNAPSHOT\openejb-api-3.1.2-SNAPSHOT.jar
[  23] [Resolved   ] [    1]
file:C:\.m2\org\apache\openejb\openejb-javaagent\3.1.2-SNAPSHOT\openejb-javaagent-3.1.2-SNAPSHOT.jar
[  24] [Resolved   ] [    1]
file:C:/.m2/org/apache/openejb/openejb-jee/3.1.2-SNAPSHOT/openejb-jee-3.1.2-SNAPSHOT.jar
[  25] [Resolved   ] [    1]
file:C:/.m2/org/apache/openejb/openejb-loader/3.1.2-SNAPSHOT/openejb-loader-3.1.2-SNAPSHOT.jar
[  27] [Resolved   ] [    1]
file:C:\.m2\org\apache\xbean\xbean-asm-shaded\3.7-SNAPSHOT\xbean-asm-shaded-3.7-SNAPSHOT.jar
[  29] [Resolved   ] [    1]
file:C:\.m2\org\apache\xbean\xbean-naming\3.7-SNAPSHOT\xbean-naming-3.7-SNAPSHOT.jar
[  30] [Resolved   ] [    1]
file:C:\.m2\org\apache\xbean\xbean-reflect\3.7-SNAPSHOT\xbean-reflect-3.7-SNAPSHOT.jar
[  32] [Resolved   ] [    1]
http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar
[  35] [Active     ] [    1]
http://repo1.maven.org/maven2/org/ops4j/pax/url/pax-url-wrap/1.1.2/pax-url-wrap-1.1.2.jar
[  36] [Resolved   ] [    1]
wrap:http://repo2.maven.org/maven2/org/apache/activemq/activemq-core/4.1.1/activemq-core-4.1.1.jar
[  37] [Resolved   ] [    1]
wrap:http://repo2.maven.org/maven2/org/apache/activemq/activemq-ra/4.1.1/activemq-ra-4.1.1.jar
[  40] [Active     ] [    1]
file:C:\projs\sandbox\openejb-osgi-v1\wynik5\plugins\ejb_stateless_1.0.0.jar
[  44] [Resolved   ] [    1]
file:C:\.m2\org\apache\xbean\xbean-finder-shaded\3.7-SNAPSHOT\xbean-finder-shaded-3.7-SNAPSHOT-bundle.jar
[  48] [Resolved   ] [    1]
file:C:\.m2\org\apache\geronimo\specs\geronimo-ejb_3.1_spec\1.0.0-EA1-SNAPSHOT\geronimo-ejb_3.1_spec-1.0.0-EA1-SNAPSHOT.jar
[  50] [Active     ] [    1]
file:C:\.m2\org\apache\openejb\openejb-core-osgi\3.1.2-SNAPSHOT\openejb-core-osgi-3.1.2-SNAPSHOT.jar
[  52] [Active     ] [    1]
file:C:\projs\sandbox\openejb-osgi-v1\wynik5\plugins\ejb_client_1.0.0.jar

The client (id: 52) looks as follows:

package ejb_client;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;

import ejb.BusinessInterface;

public class Activator implements BundleActivator {

	public void start(BundleContext context) throws Exception {
		System.out.println("Starting the ejb client");
		
		ServiceReference serviceReference =
context.getServiceReference("ejb.BusinessInterface");
		BusinessInterface businessIntf = (BusinessInterface)
context.getService(serviceReference);
		String result = businessIntf.execute("Hello from " +
context.getBundle().getSymbolicName());
		System.out.println(result);
	}
	
	public void stop(BundleContext context) throws Exception {
        System.out.println("Stoping the ejb client...");
	}

}

with its MANIFEST.MF:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Ejb_client
Bundle-SymbolicName: ejb_client
Bundle-Version: 1.0.0
Bundle-Activator: ejb_client.Activator
Import-Package: ejb,
 javax.naming,
 javax.transaction,
 org.apache.openejb.client,
 org.osgi.framework;version="1.3.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.apache.openejb.core;bundle-version="3.1.2"

The rest is in the repo. Ask questions for more information. Give it a
try so you can really feel what I feel :)

I'll be polishing it (no pun intended) to handle more complex use
cases in the coming days.

Jacek

-- 
Jacek Laskowski
Notatnik Projektanta Java EE - http://www.JacekLaskowski.pl

Mime
View raw message