Augusto Sellhorn wrote:Thanks!
Interesting, we're using version 2.0.1 and I wasn't aware of that feature. Probably not turning it on I guess ... (perhaps I have to tell it where the xml files are???)
Augusto Sellhorn wrote:For example, we got weblogic JMS to work in an OSGi container but encountered a lot of issues, and it was not a trivial thing to make it work in OSGi. Things in this regard are a bit complicated when you introduce declarative frameworks like Spring. For example, Spring classes you use in a context are not scanned by the maven bundle plugin and it can't put packages in for you automagically :-(
Richard S. Hall wrote:
Pradeep bhatt wrote:Thanks authors. what about .NET langauges like C# ? Is modularity taken care of there ?
.NET has more support for modularity by default than Java, but it is not as fine-grained and dynamic as OSGi. .NET packages its types into assemblies, which are its module concept. Assemblies contain a list of their dependencies on other assemblies. This way the .NET runtime can make sure all requirements are satisfied and it can support side-by-side versions. Additionally, .NET has another access modifier (besides public, private, and protected), called internal. This provides visibility within the entire assembly, but not outside of it (i.e., module global).
Pradeep bhatt wrote:
Richard S. Hall wrote:
Pradeep bhatt wrote:
How does osgi ensure that dependency are satisified. Can the author throw more light on the internal implementation details ?
Each bundle JAR file lists its dependencies on external code. The OSGi framework that reads this information at execution time and makes sure that other bundles have been deployed to satisfy the requirements. If not, you get an exception up front telling you some required code is missing.
Wouldn't it burden the deployer to specify the external depedency. There is a chance it may be missed because the code uses say class.forname(..)
Pradeep bhatt wrote:Why is the expansion of ogsi no longer equal to Open Services Gateway Initiative ?
Pradeep bhatt wrote:
Yes. I use OSGi with Spring. My modules have most of the time, at the code level no dependencies to OSGi (via activators) or even Spring. So I like this approach as these are pretty framework independent POJOs.
ummh I thought ogsi was a runtime thing meaning no imports in my class.
sourabh girdhar wrote:Are there some code examples?
Augusto Sellhorn wrote:Actually I am using karaf, so yeah, karaf has a feature:install command (and features have a version) but I don't really see how you can do an update of a feature. I got the impression features were not officially in the spec, but I thought they were a common feature of other containers too (like equinox and felix).
Lance Colton wrote:
Stuart McCulloch wrote:
Unfortunately we didn't have enough space to cover Eclipse RCP, but there are plenty of good RCP books around. However a lot of the concepts and best-practices in the book can be used when building RCP applications and Eclipse plugins. The Maven Appendix covers building applications with the maven-bundle-plugin (we tend to use bnd for examples in the book).
I bought "Eclipse Plugins", which is extremely relevant to Eclipse RCP and a pretty good book.
Why I asked about Maven was I have expirence with ant, and always wanted to find the time to teach myself Maven, so there are Maven build examples inside of "OSGi in Action?"
John Todd wrote:
Richard S. Hall wrote:
John Todd wrote:Hi,
What are Eclipse Gemini and Eclipse Virgo?
Sometimes, Eclipse definitions are too theoretical.
Thanks.
I'm not involved in Eclipse at all, so my descriptions might not be totally accurate.
Eclipse Gemini is about creating enterprise-oriented modules. It is implementing some of the OSGi Enterprise specs, like Blueprint and Web Applications.
Eclipse Virgo was SpringSource's OSGi-based App Server project, which was contributed to Eclipse.
Things are fuzzy to me now.
I have basic and primitive idea about OSGi but what is OSGi Enterprise Specs? what is a blueprint?
kri shan wrote:
OSGI is a technology for creating code in an SOA framework (a coding framework). Complex Service Oriented architecture supports OSGi as the foundation for its next generation runtime infrastructure.
Why do we need another SOA runtime framework ? Already Axis2 / Spring Web Services are supporting SOA coding frameworks.
kri shan wrote:
Equinox is an implementation of the OSGi R4 core framework specification, a set of bundles that implement various optional OSGi services and other infrastructure for running OSGi-based systems. The goal of the Equinox project is to be a first class OSGi community and foster the vision of Eclipse as a landscape of bundles. As part of this, it is responsible for
developing and delivering the OSGi framework implementation used for all of Eclipse.
What Equinox does (still i am not clear) ? Is it Eclipse plug-in for OSGI framework support ?
Lance Colton wrote:First of all, this promo is probably the most exciting I've seen since I've been on coderanch, OSGi in a very cool topic.
Does the book go into Eclipse RCP development in any way? (or any kind of RCP development built on the OSGi framework) or is it strictly a book relating to building your own modular applications on the OSGi framework? I see an Appendix for Maven on this page does it cover Maven? or how to integrate OSGi application execution into Maven?
Thanks in advance
Sai Hegde wrote:You could use IOC enforcement during your build process. So, why OSGi then???
Richard S. Hall wrote:
Augusto Sellhorn wrote:So a nice feature of OSGi is the ability to manage multiple versions of modules at the same time. However, when we install new bundles in our container, every time we increment the version id (say from an mvn url) a new bundle is installed.
So if I had bundle example.bundle.A, version 1.0.0.0
And the install bundle example.bundle.A, version 1.0.0.1
I now have two bundle.As in my environment.
Is there a way to do this in place? That is, update that same bundle (by id maybe?) but replace the old version with the new one, while also preserving the same bundle id (and install order in the container).
I have the same question about features, but kind of curious first at the bundle level.
BundleContext.installBundle() is how you install a new bundle.
Bundle.update() is how you update an existing bundle.