[
https://issues.apache.org/jira/browse/CAY-1882?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13822492#comment-13822492
]
Cristiano Ghersi commented on CAY-1882:
---------------------------------------
1) Code to change:
1.a) A new class ClassRegistry has to be added in the org.apache.cayenne.di.spi
package. Find attached the class code.
1.b) A Cayenne class (org.apache.cayenne.di.spi.DefaultAdhocObjectFactory) has
also to be modified to be able to search in the ClassRegistry for classes. Find
attached the class code.
2) Maven generation for OSGi: Maven can generate an OSGi Bundle adding
automatically all the dependencies, based on the maven project dependencies and
source analysis. To generate an OSGi bundle some changes are needed in the
pom.xml (or files if you are working on multiple projects) file. First of all
it is necessary to change the packaging type of the project from jar to bundle
as it is show in this snippet:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.cayenne</groupId>
<artifactId>cayenne-parent</artifactId>
<version>3.1B2-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<groupId>org.apache.cayenne.osgi</groupId>
<artifactId>cayenne-osgi</artifactId>
<name>Cayenne OSGified</name>
<packaging>bundle</packaging>
<url>http://maven.apache.org</url>
Then it is necessary to add a plugin to the build section:
<plugins>
...
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>org.apache.cayenne,
org.apache.cayenne.*</Export-Package>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
</instructions>
</configuration>
</plugin>
...
</plugins>
Finally you can generate the bundle jar
$ cd cayenne-osgi # or navigate to the root directory of the cayenne osgi
project
$ mvn org.apache.felix:maven-bundle-plugin:bundle
The bundle jar can be found in cayenne-osgi/target/cayenne-osgi.jar
Feel free to change this procedure according to your experience!
3) Use in production environment.
To use Cayenne under OSGi environment, the user needs to place the following
snippet at the initialization of Cayenne stuff:
http://www.snip2code.com/Snippet/12313/Apache-Cayenne--correctly-load-classes-u
> Porting to OSGi environment
> ---------------------------
>
> Key: CAY-1882
> URL: https://issues.apache.org/jira/browse/CAY-1882
> Project: Cayenne
> Issue Type: Improvement
> Components: Core Library
> Affects Versions: 3.1B1, 3.1B2, 3.2M1
> Environment: OSGi
> Reporter: Cristiano Ghersi
> Labels: class_loader, osgi
> Fix For: 3.2M2
>
>
> Cayenne framework doesn't run under OSGi environments as class-loading
> problems arise in the dynamic loading of autogenerated classes by Cayenne
> Modeler.
--
This message was sent by Atlassian JIRA
(v6.1#6144)