Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/Examples/DBWS/AdvancedOSGi"

(Modifying Activator to implement javax.xml.ws.Provider)
Line 3: Line 3:
 
   .source-xml {padding:4px;border:1px solid black;}
 
   .source-xml {padding:4px;border:1px solid black;}
 
   .source-text {padding:4px;border:1px solid black;}
 
   .source-text {padding:4px;border:1px solid black;}
</css> __NOTOC__  
+
  .squiggle{background-image:url("squiggle.gif");background-repeat:repeat-x;background-position:left bottom;padding-bottom:2px;vertical-align:text-top;font-style:italic;}
 +
</css>
 +
__NOTOC__  
  
 
== DBWS in an OSGi Environment  ==
 
== DBWS in an OSGi Environment  ==
Line 86: Line 88:
  
 
Change the Activator to extend <code>org.eclipse.persistence.internal.dbws.ProviderHelper</code>:
 
Change the Activator to extend <code>org.eclipse.persistence.internal.dbws.ProviderHelper</code>:
<source lang="java5">
+
<code>public class Activator extends <span class="squiggle">ProviderHelper</span>  implements BundleActivator</code>
public class Activator extends ProviderHelper implements BundleActivator
+
</source>
+

Revision as of 16:24, 11 August 2010


DBWS in an OSGi Environment

An Eclipselink DBWS service can be run in an OSGi environment using Javase 6's 'containerless' javax.xml.ws.Endpoint API.

Environment Setup

Download a version of the Eclipse IDE that includes the Plug-in Development Environment (PDE) (Eclipse IDE for Java EE Developers, Eclipse Classic 3.6.0 or
Eclipse for RCP and RAP Developers). Install an OSGi-friendly JDBC driver - use Derby bundle:

  • Download Apache Derby (org.apache.derby) bundle from Orbit.


EclipseLinkExamplesOSGiDeveloping with EclipseLink OSGi in PDE-2v2.png

  • Place the org.apache.derby bundle into your $ECLIPSE_HOME/dropins folder.
  • Install the EclipseLink and Jetty target Components:


EclipseLink DBWS with OSGi in PDE.png

EclipseLink DBWS with OSGi in PDE2.png
Accept the license and proceed through the prompts for re-starting Eclipse ...
{NB - later, a set of updated EclipseLink bundles will be required}
Under 'Preferences' -> 'Plug-in Development' -> 'Target Platform', reload the Running Platform (Active) EclipseLink DBWS with OSGi Target Platform.png

Create a new Plug-in project

From the 'Plug-in Development' Perspective, create a new Plug-in project SimpleTable:
{Note the choice of 'standard' for OSGi framework}
EclipseLink DBWS with OSGi SimpleTable.png
Proceed to the next panel of the wizard where the (OSGi bundle) Activator for SimpleTable is defined:
EclipseLink DBWS with OSGi SimpleTableActivator.png
Click 'Finish' and open the generated Activator:

package simpletable;
 
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
 
public class Activator implements BundleActivator {
 
	private static BundleContext context;
 
	static BundleContext getContext() {
		return context;
	}
 
	/*
	 * (non-Javadoc)
	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
	 */
	public void start(BundleContext bundleContext) throws Exception {
		Activator.context = bundleContext;
	}
 
	/*
	 * (non-Javadoc)
	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
	 */
	public void stop(BundleContext bundleContext) throws Exception {
		Activator.context = null;
	}
}

Modifying Activator to implement javax.xml.ws.Provider

In order for our Activator to 'provide' Web service, we need to update the EclipseLink bundles. Builds after 2.1.1.v20100805-r7986 have EclipseLink DBWS packaged as a 'fragment' bundle that extends the core org.eclipse.persistence bundle. Download the updated bundles and extract the following 6 bundles: directory:

$ ls updatedBundles/
org.eclipse.persistence.asm.source_2.1.1.v20100805-r7986.jar
org.eclipse.persistence.asm_2.1.1.v20100805-r7986.jar
org.eclipse.persistence.core.source_2.1.1.v20100805-r7986.jar
org.eclipse.persistence.core_2.1.1.v20100805-r7986.jar
org.eclipse.persistence.dbws.source_2.1.1.v20100805-r7986.jar
org.eclipse.persistence.dbws_2.1.1.v20100805-r7986.jar

Edit the Target Platform, adding the directory with the above bundles:
EclipseLink DBWS with OSGi UpdatedBundles1.png
EclipseLink DBWS with OSGi UpdatedBundles2.png

Change the Activator to extend org.eclipse.persistence.internal.dbws.ProviderHelper: public class Activator extends ProviderHelper implements BundleActivator

Back to the top