Hi Christiano, I already did the gwt bundles in the past.
I gonna create new gwt bundles (for 2.6.0) and include it in the next 2013.12 release.
Regards JB On 12/07/2013 01:35 PM, Cristiano Costantini wrote:
Hi All, as there is no so many interest on supporting OSGi in the GWT community (the related issue has only 5 votes: https://code.google.com/p/google-web-toolkit/issues/detail?id=8424 and I know all of those who have starred it :-D ), I wonder if it is more appropriate to make OSGi release under org.apache.servicemix.bundles. It has been done in the past (for "org.apache.servicemix.bundles/org.apache.servicemix.bundles.gwt-user/2.4.0_1" and "org.apache.servicemix.bundles/org.apache.servicemix.bundles.gwt-dev/2.4.0_1"). Now it is going to be released GWT version 2.6.0 and I believe it should be released only gwt-servlet artifact with OSGi headers (so "org.apache.servicemix.bundles/org.apache.servicemix.bundles.gwt-servlet/2.6.0_1"). Could someone point me to the right process (where is the source code of org.apache.servicemix.bundles.*, where to open related issues, where to discuss them, who to involve in the approval process) so I can try to push and support for this proposal? Thank you!!! Cristiano 2013/11/19 Cristiano Costantini <[email protected]>Hi all! Just an update about my ongoing effort to OSGIfy GWT. I did proposed a patch to GWT community and to validate it I've adapted 5 significant examples from the GWT distribution to run on Apache Karaf, (more precisely I used ServiceMix 4.5.3 but I'm not using neither Camel, CXF or ActiveMQ). You can find the examples here: https://github.com/cristcost/gwt-karaf-examples They require GWT compiled using this patch of mine https://gwt-review.googlesource.com/#/c/5351/ If someone want to try them out, I will be glad to help and give more detailed instructions. Actually there is no so much interest from GWT community, so I would like you all supporting me by starring the related issue: https://code.google.com/p/google-web-toolkit/issues/detail?id=8424 and if you are interested, apply to https://gwt-review.googlesource.com/and perform a (non binding) review of https://gwt-review.googlesource.com/#/c/5351/ so that the patch can be noticed more. The patch is not yet ideal, as the .bnd file contains some "workaround" to address complex dependencies in the GWT jar, but I hope these can be addressed by a refactoring in GWT package structure in next release. Also, there is a rare issue when two applications are deployed together and use "com.google.web.bindery.requestfactory.server.RequestFactoryServlet". Anyhow I would like it to be approved for the upcoming final release of GWT 2.6.0 which is expected beginning of december, so that community can start developing first prototype applications using this architecture. To go back to the examples, they actually don't make full use of OSGi capabilities (no OSGi service is used for this) but me and some friends are working on a *full* demo application that make use of the full ServiceMix stack and have a GWT front-end deployed on ServiceMix. For this demo, stay tuned on this other github project https://github.com/cristcost/sensormix We would like to have it working on next version of GWT (2.6.0) and also next version of ServiceMix (4.6.0). We would like to finish it before mid december, and we will present it at next "GDG Firenze Happy Hour" meeting that should be next 11th of December (you are welcome to join if you make a stop in Italy). I hope this topic interests you and if you like it I will be glad to have feedback about this so to encourage me and my friends ;-) Finally, we are open to any suggestion. Thank you Cristiano 2013/11/8 Cristiano Costantini <[email protected]>Hi all, I have followed Gert suggestion and I have a small patch that integrate osgi-fication of GWT-Servlet in the GWT ant build. I have one question before submitting the patch. The bnd property files looks like this: Bundle-Name: Google Web Toolkit :: Servlet Bundle-SymbolicName: gwt-servlet Bundle-Version: @version@ Export-Package: *;version=@version@ Import-Package: javax.servlet.*, !com.google.gwt.*, *;resolution:=optional the instruction !com.google.gwt.* generates the header "Ignore-Package:", and I have never seen it header before, but if I leave the configuration with just "Import-Package: *;resolution:=optional", I get a manifest with a huge list of optional package imports. I'm confident that the bundle really don't need to import packages inside com.google.gwt.* so excluding them seems more optimized. But I was not expecting the Ignore-Package header, and I don't know how to interpret it. So, which one of the two configuration should I use? Import-Package: *;resolution:=optional ==> more conservative solution Import-Package: javax.servlet.*, !com.google.gwt.*, *;resolution:=optional ==> probably more optimized both options works on my test (but it is a simple one). Thank you again. Cristiano 2013/11/6 Gert Vanthienen <[email protected]>Hi Cristiano, For the Import-Package, you should be able to append the resolution directive with a ;, just like you do with the maven-bundle-plugin instructions. Something like *;resolution:=optional should work fine, I think. For the properties, my first suggestion would be to just use plain Ant to copy the file into a working directory and filter those property values first and then point <bnd> to the filtered file, but it looks like there's a <bndexpand> task as well that might be helpful, cfr. https://github.com/bndtools/bnd/wiki/%5Bant%5D-Loading-and-Expanding-Shared-Headers-or-Properties Regards, Gert Vanthienen On Wed, Nov 6, 2013 at 10:14 AM, Cristiano Costantini <[email protected]> wrote:Hi all Short story: - Using "Import-Package: *" generates mandatory imports, do you know how to instruct bnd tool in the .bnd property file to scan imports and set them as with "resolution:=optional"? - "Bundle-Version: 2.6.0.rc1" is hard coded, do you know how to use external Ant variables in a .bnd property filewhenusing Ant tasks? Long story: I have made a GWT demo project that works into Servicemix 4.5.3 (I will publish it as soon as I have some more time), by now it resolves the dependency with gwt-servlet by installing the following bundle: install -swrap:mvn:com.google.gwt/gwt-servlet/${gwt.version}$Bundle-SymbolicName=gwt-servletIt creates a huge manifest for the GWT-Servlet, it heavily make use of optional imports, the demo is just a simple example with 1 server sideGWTRpc Service (-> a servlet), but it works. I then tried to automate the generation of OSGi Manifest into the build lifecycle of GWT so that the original Jar in the GWT distribution isreadyfor deployment to OSGi without wrapping it, but here things get alittleharder. The "bnd" ant task is hard to fit GWT lifecycle as the GWT-Servlet Jaris asubset of classes extracted from GWT-User and GWT-Dev. I think using "bndwrap" ant task and post process GWT-Servlet is preferable. I tried first by wrapping the Jar on the command line and I made asimple.bnd file with the following options contents: Bundle-Name: Google Web Toolkit :: Servlet Bundle-SymbolicName: gwt-servlet Bundle-Version: 2.6.0.rc1 Export-Package: * Import-Package: * I got an osgi-fied bundle, I deployed it replacing the one created with wrap: deployer but this new one does not get resolved: the difference is that the made with wrap deployer sets all Imports as optional. It sound reasonable to me, as the classes in the GWT-Servlet have been accurately selected by GWT committers (remember GWT-Servlet comes fromasubset of GWT-Dev and GWT-User) and may have many java imports ofclassesnot required on the server but are still referenced in the bytecode. Ideally, we should create a .bnd file that only specify the rightPackageImports and Exports, but I don't have ideas on how to make it simple. I guess the best would be to make a first step and achieve having an initial bundle with imports as optional but I don't know how to specify this to bnd for Import-Packages... (see initial question). Anyone can suggest me how to do it? Here, if someone is interested, are the headers of the two bundles: This one workshttps://gist.github.com/cristcost/7332635#file-gwt-servlet-osgi-headers-with-wrapThis one don'thttps://gist.github.com/cristcost/7332635#file-gwt-servlet-osgi-headers-from-command-line-bndI'll keep you updated as I try to progress further. ;-) Cristiano PS. Here are the Ant rules for selecting what to put inside theGWT-ServletJAR. Any Idea on how to create more fine tuned .bnd files from theserules?<fileset dir="${gwt.dev.bin}"> <include name="com/google/gwt/dev/asm/**" /> <include name="com/google/gwt/dev/util/Name*.class" /> <include name="com/google/gwt/dev/util/StringKey.class" /> <include name="com/google/gwt/util/tools/shared/**" /> <include name="com/google/gwt/core/shared/**" /> </fileset> <fileset dir="${gwt.user.bin}"> <exclude name="**/rebind/**" /> <exclude name="**/tools/**" /> <exclude name="**/super/**" /> <exclude name="com/google/gwt/json/**" /> <exclude name="com/google/gwt/junit/*" /> <exclude name="com/google/gwt/junit/client/GWTTestCase.*" /> <exclude name="com/google/gwt/junit/remote/**" /> <exclude name="com/google/gwt/junit/server/**" /> <exclude name="com/google/gwt/benchmarks/*" /> <exclude name="**/*.gwtar" /> </fileset>
-- Jean-Baptiste Onofré [email protected] http://blog.nanthrax.net Talend - http://www.talend.com
