Hi, Am 10.10.2012 um 21:37 schrieb John King:
> Hi, > > Thanks for the recommendation. Will try forthwith. > > Do you happen to know of any publicly accessible Maven or OSGI > Repositories that might have that combined bundle already? No, I don't know of such a bundle (we have a private one) Regards Felix > > John K > > On 10/9/12 11:54 PM, Felix Meschberger wrote: >> Hi, >> >> You already removed the javax.mail and javax.activation from the system >> packages in the felix config. This is fine. >> >> Other than that we experienced that the mail and activation libraries are >> quite intertwined and our best experience with those was to actually have a >> single bundle combining both bundles. This way, they have access to their >> internals, which they seem to expect... >> >> But then, some bundle must provide the "application/atom+xml" data handler >> and I am not sure whether this is part of either the javax.mail or >> javax.activation libraries .... >> >> Regards >> Felix >> >> Am 10.10.2012 um 03:16 schrieb John King: >> >>> Folks, >>> >>> I have recently started working on the Opencast Matterhorn project which >>> involves capturing, trans-coding and distribution of digital video files. >>> >>> One of the services we distribute to is YouTube. As I understand it, >>> the Matterhorn module that does this worked fine in Felix 3 but now >>> fails in Felix 4. >>> >>> We are running the application with Java 1.6. >>> >>> The stack trace for this error: >>> 17:08:44 WARN (YoutubeDistributionService:418) - Error distributing >>> http://localhost:8080/files/mediapackage/a78f4054-9b79-4d87-b938-08547d495a9d/49a4dfe4-91bf-4450-b186-e0d8f24a53cd/test3.mp4 >>> >>> javax.activation.UnsupportedDataTypeException: application/atom+xml >>> at javax.activation.DataHandler.writeTo(DataHandler.java:75) >>> at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:452) >>> at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:157) >>> at >>> com.google.gdata.wireformats.output.media.MediaMultipartGenerator.generate(MediaMultipartGenerator.java:58) >>> at >>> com.google.gdata.wireformats.output.media.MediaMultipartGenerator.generate(MediaMultipartGenerator.java:37) >>> at com.google.gdata.client.Service.writeRequestData(Service.java:2071) >>> at >>> com.google.gdata.client.media.MediaService.insert(MediaService.java:398) >>> at >>> org.opencastproject.distribution.youtube.YoutubeDistributionService.distribute(YoutubeDistributionService.java:344) >>> ....................... >>> >>> Obviously the google gdata code, specifically gdata-media, is in play >>> here along with javax.mail and javax.activation. >>> >>> In the Felix 4 context we are using the following javax.mail and >>> javax.activation bundles from Geronimo >>> geronimo-activation_1.1_spec-1.1.jar and >>> geronimo-javamail_1.4_mail-1.8.3.jar >>> >>> Googling for this error, I found the following thread that discusses a >>> problem that seems closely analogous to our problem, >>> http://forum.springsource.org/archive/index.php/t-69180.html >>> >>> The container in that discussion is the Spring dm Server but the error >>> and likely cause seem relevant. See especially the posting on Mar 21st, >>> 2009 by oleg.zhurakousky. >>> >>> Note particularly that the root cause is likely not an >>> UnsupportedDataTypeException but a ClassNotFoundException for one of the >>> classes in com.sun.mail.handlers that becomes the >>> UnsupportedDataTypeException. Quoting the thread " This results in the >>> DataContentHandler for your MIME type being null which is the root of >>> your exception. " >>> >>> I have tried explicitly importing the Geronimo javax.mail and >>> javax.activation bundles using <Import-Bundle> and <Embed-Dependency> as >>> an analogous fix to that in the Spring thread but that doesn't fix our >>> problem. I've tried several other javax.mail and javax.activation >>> bundles e.g. from Spring but with no luck. Manipulating the >>> ClassLoaders as discussed there doesn't seem possible as the error is >>> being generated in the gdata code and, in any event, that approach seems >>> evil. >>> >>> Any pointers or suggestions are most welcome. For example, should I >>> explicitly import com.sun.mail.handlers.* even though neither our code >>> nor the gdata code calls them directly? That also seems evil to me. >>> >>> I've looked at all the imports in the system/console/bundles UI for our >>> bundle and the Geronimo bundles and everything appears consistent namely >>> that our YouTube bundle is importing the javax.mail packages from the >>> Geronimo bundle. Also the Geronimo mail bundle is importing >>> javax.activation bundle from the Geronimo mail bundle. >>> >>> Relevant sections of the Felix 4 config for our app are: >>> >>> # Packages 'javax.xml.stream, javax.xml.stream.events, >>> javax.xml.stream.util' removed --> provided by ServiceMix STAX bundle >>> # Packages 'javax.mail, javax.mail.internet' removed --> provided by >>> Geronimo JavaMail bundle >>> org.osgi.framework.system.packages=org.osgi.framework;version=1.6.0,org.osgi.framework.hooks.bundle;version=1.0.0,org.osgi.framework.hooks.resolver;version=1.0.0,org.osgi.framework.hooks.service;version=1.1.0,org.osgi.framework.hooks.weaving;version=1.0.0,org.osgi.framework.launch;version=1.0.0,org.osgi.framework.startlevel;version=1.0.0,org.osgi.framework.wiring;version=1.0.0,org.osgi.service.packageadmin;version=1.2.0,org.osgi.service.startlevel;version=1.1.0,org.osgi.service.url;version=1.0.0,org.osgi.util.tracker;version=1.5.0,javax.accessibility, >>> javax.activity, javax.annotation, javax.annotation.processing, >>> javax.crypto, javax.crypto.interfaces, javax.crypto.spec, javax.imageio, >>> javax.imageio.event, javax.imageio.metadata, javax.imageio.plugins.bmp, >>> javax.imageio.plugins.jpeg, javax.imageio.spi, javax.imageio.stream, >>> javax.jws, javax.jws.soap, javax.lang.model, javax.lang.model.element, >>> javax.lang.model.type, javax.lang.model.util, javax.management, >>> javax.management.loading, javax.management.modelmbean, >>> javax.management.monitor, javax.management.openmbean, >>> javax.management.relation, javax.management.remote, >>> javax.management.remote.rmi, javax.management.timer, javax.naming, >>> javax.naming.directory, javax.naming.event, javax.naming.ldap, >>> javax.naming.spi, javax.net, javax.net.ssl, javax.print, >>> javax.print.attribute, javax.print.attribute.standard, >>> javax.print.event, javax.rmi, javax.rmi.CORBA, javax.rmi.ssl, >>> javax.script, javax.security.auth, javax.security.auth.callback, >>> javax.security.auth.kerberos, javax.security.auth.login, >>> javax.security.auth.spi, javax.security.auth.x500, javax.security.cert, >>> javax.security.sasl, javax.sound.midi, javax.sound.midi.spi, >>> javax.sound.sampled, javax.sound.sampled.spi, javax.sql, >>> javax.sql.rowset, javax.sql.rowset.serial, javax.sql.rowset.spi, >>> javax.swing, javax.swing.border, javax.swing.colorchooser, >>> javax.swing.event, javax.swing.filechooser, javax.swing.plaf, >>> javax.swing.plaf.basic, javax.swing.plaf.metal, javax.swing.plaf.multi, >>> javax.swing.plaf.synth, javax.swing.table, javax.swing.text, >>> javax.swing.text.html, javax.swing.text.html.parser, >>> javax.swing.text.rtf, javax.swing.tree, javax.swing.undo, javax.tools, >>> javax.transaction, javax.transaction.xa, javax.xml, javax.xml.bind, >>> javax.xml.bind.annotation, javax.xml.bind.annotation.adapters, >>> javax.xml.bind.attachment, javax.xml.bind.helpers, javax.xml.bind.util, >>> javax.xml.crypto, javax.xml.crypto.dom, javax.xml.crypto.dsig, >>> javax.xml.crypto.dsig.dom, javax.xml.crypto.dsig.keyinfo, >>> javax.xml.crypto.dsig.spec, javax.xml.datatype, javax.xml.namespace, >>> javax.xml.soap, javax.xml.transform, javax.xml.transform.dom, >>> javax.xml.transform.sax, javax.xml.transform.stax, >>> javax.xml.transform.stream, javax.xml.validation, javax.xml.ws, >>> javax.xml.ws.handler, javax.xml.ws.handler.soap, javax.xml.ws.http, >>> javax.xml.ws.soap, javax.xml.ws.spi, javax.xml.ws.wsaddressing1, >>> javax.xml.xpath, org.ietf.jgss, org.omg.CORBA, org.omg.CORBA_2_3, >>> org.omg.CORBA_2_3.portable, org.omg.CORBA.DynAnyPackage, >>> org.omg.CORBA.ORBPackage, org.omg.CORBA.portable, >>> org.omg.CORBA.TypeCodePackage, org.omg.CosNaming, >>> org.omg.CosNaming.NamingContextExtPackage, >>> org.omg.CosNaming.NamingContextPackage, org.omg.Dynamic, >>> org.omg.DynamicAny, org.omg.DynamicAny.DynAnyFactoryPackage, >>> org.omg.DynamicAny.DynAnyPackage, org.omg.IOP, >>> org.omg.IOP.CodecFactoryPackage, org.omg.IOP.CodecPackage, >>> org.omg.Messaging, org.omg.PortableInterceptor, >>> org.omg.PortableInterceptor.ORBInitInfoPackage, org.omg.PortableServer, >>> org.omg.PortableServer.CurrentPackage, >>> org.omg.PortableServer.POAManagerPackage, >>> org.omg.PortableServer.POAPackage, org.omg.PortableServer.portable, >>> org.omg.PortableServer.ServantLocatorPackage, org.omg.SendingContext, >>> org.omg.stub.java.rmi >>> >>> # specs >>> felix.auto.start.2= \ >>> ....... >>> file:${felix.home}/lib/ext/geronimo-activation_1.1_spec-1.1.jar \ >>> >>> # libraries >>> felix.auto.start.3= \ >>> ...... >>> file:${felix.home}/lib/ext/geronimo-javamail_1.4_mail-1.8.3.jar \ >>> file:${felix.home}/lib/ext/jolokia-osgi-1.0.4.jar >>> >>> >>> Relevant sections of the pom.xml for our YouTubeDistribution module >>> looks like: >>> <!-- Youtube delivery dependencies --> >>> >>> <dependency> >>> <groupId>gdata</groupId> >>> <artifactId>gdata-client</artifactId> >>> <version>1.0</version> >>> <classifier>1.45.0</classifier> >>> </dependency> >>> >>> <dependency> >>> <groupId>gdata</groupId> >>> <artifactId>gdata-core</artifactId> >>> <version>1.0</version> >>> <classifier>1.45.0</classifier> >>> </dependency> >>> >>> <dependency> >>> <groupId>gdata</groupId> >>> <artifactId>gdata-media</artifactId> >>> <version>1.0</version> >>> <classifier>1.45.0</classifier> >>> </dependency> >>> >>> <dependency> >>> <groupId>gdata</groupId> >>> <artifactId>gdata-youtube</artifactId> >>> <version>2.0</version> >>> <classifier>1.45.0</classifier> >>> </dependency> >>> >>> <dependency> >>> <groupId>gdata</groupId> >>> <artifactId>gdata-youtube-meta</artifactId> >>> <version>2.0</version> >>> <classifier>1.45.0</classifier> >>> </dependency> >>> .......................... >>> <plugin> >>> <groupId>org.apache.felix</groupId> >>> <artifactId>maven-bundle-plugin</artifactId> >>> <version>2.0.1</version> >>> <extensions>true</extensions> >>> <configuration> >>> <instructions> >>> <Bundle-SymbolicName> ${project.artifactId} >>> </Bundle-SymbolicName> >>> <Private-Package> >>> com.google.*;-split-package:=merge-first, >>> org.jdom.*, >>> flexjson, >>> </Private-Package> >>> <Import-Package> >>> *;resolution:=optional >>> </Import-Package> >>> <Export-Package> >>> org.opencastproject.deliver.youtube.*;version=${project.version}, >>> org.opencastproject.distribution.youtube.*;version=${project.version} >>> </Export-Package> >>> <Embed-Dependency> >>> flexjson;inline=true, >>> gdata-client;inline=true, >>> gdata-core;inline=true, >>> gdata-media;inline=true, >>> gdata-youtube;inline=true, >>> google-collections;inline=true, >>> </Embed-Dependency> >>> <Service-Component> >>> OSGI-INF/distribution-service-youtube.xml >>> </Service-Component> >>> </instructions> >>> </configuration> >>> </plugin> >>> >>> >>> -- >>> John King >>> Applications Programmer >>> Learning Systems Group >>> Educational Technology Services >>> 9 Dwinelle Hall - Mail >>> 117 Dwinelle Hall - Office >>> University of California >>> Berkeley, CA 94720-2535 >>> Phone: 510-529-5074 >>> Email: [email protected] >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> > > > -- > John King > Applications Programmer > Learning Systems Group > Educational Technology Services > 9 Dwinelle Hall - Mail > 117 Dwinelle Hall - Office > University of California > Berkeley, CA 94720-2535 > Phone: 510-529-5074 > Email: [email protected] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

