[
https://issues.apache.org/jira/browse/STANBOL-1246?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rupert Westenthaler resolved STANBOL-1246.
------------------------------------------
Resolution: Fixed
Fix Version/s: 0.12.0
> Exclude javax.transaction.* from FrameworkFragment
> --------------------------------------------------
>
> Key: STANBOL-1246
> URL: https://issues.apache.org/jira/browse/STANBOL-1246
> Project: Stanbol
> Issue Type: Improvement
> Components: Commons, Contenthub
> Affects Versions: 0.12.0
> Reporter: Rupert Westenthaler
> Assignee: Rupert Westenthaler
> Fix For: 0.12.0
>
>
> Currently `javax.transaction`and `javax.transaction.xa` are imported from the
> JDK via the Stanbol framework fragment. This is potentially dangerous as the
> versions included in the JDK are incomplete. This can be easily checked by
> comparing the package summary of the packages in the Java6 javadoc [1] and
> the documentation of JSR 907: Java Transaction API (JTA) available at [2]
> This is for an OSGI environment especially dangerous vor several reasons:
> 1. OSGI does not allow to import classes for the same package from different
> bundles
> 2. As `javax.transaction.*` is exported from the system bundle it uses
> version 0.0.0 and not the correct JSR 907 version 1.1.
> 3. javax.transaction is referenced by `javax.sql` that is also exported from
> the system bundle. So `javax.sql` will always bind to the `javax.transaction`
> package exported by the system bundle. That means that Bundles that require
> both the full JTA AND SQL will end up importing two versions from the
> `javax.transaction.*` (1) version 1.1 from a user provided bundle with the
> full JSR 907 specification (e.g. [3]) and indirectly 0.0.0 provided by the
> system bundle (indirectly via the `javax.sql` package. This will cause OSGI
> to report a Constraint violations because a bundle MUST NOT depend on two
> versions of the same package (such a setting is best described in [4] page
> 101ff.
> A check with all modules present in the Stanbol Full Launcher showed that
> `javax.transaction` is only referenced by the Contenthub component. That
> means that we will need to add a Bundle for JTA 1.1 in the bundlelist for the
> Contenthub. I suggest to use the bundle provided by the JBoss community [3].
> All other options are not packaged as OSGI bundles and [3] does not come with
> any additional dependencies.
> [1]
> http://docs.oracle.com/javase/6/docs/api/javax/transaction/package-summary.html
> [2] http://www.oracle.com/technetwork/java/javaee/jta/index.html
> [3]
> http://search.maven.org/#artifactdetails|org.jboss.spec.javax.transaction|jboss-transaction-api_1.1_spec|1.0.1.Final|jar
> [4]
> http://felix.apache.org/site/presentations.data/Learning_to_ignore_OSGi.pdf
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)