Blogs by topic: OSGi
| • Accessibility | • Ajax | • Blogging | • Business | • Community |
| • Databases | • Deployment | • Distributed | • Eclipse | • Education |
| • EJB | • Extreme Programming | • Games | • GlassFish | • Grid |
| • GUI | • IDE | • Instant Messaging | • J2EE | • J2ME |
| • J2SE | • Jakarta | • JavaFX | • JavaOne | • Jini |
| • JSP | • JSR | • JXTA | • LDAP | • Linux |
| • Mobility | • NetBeans | • Open Source | • OpenSolaris | • OSGi |
| • P2P | • Patterns | • Performance | • Porting | • Programming |
| • Research | • RMI | • RSS Feeds | • Search | • Security |
| • Servlets | • Struts | • Swing | • Testing | • Tools |
| • Virtual Machine | • Web Applications | • Web Design | • Web Development Tools | • Web Services and XML |
J2SE

Recently I came across an interesting class loading behavior. Look at the test below...

What do you expect Class.getAnnotations() do when it can't load one of the annotation types present in the class? Read on...

Recently my colleague observed an unusual class loading error while experimenting in GlassFish V3. I really enjoyed analysing the issue and getting to the root of the problem. I will share my experience here.
Accessibility
The www.abelski.com web site offers free (for personal and academic usage) courses about various topics in software development. The site focuses on Java technologies.
Blogging
Hibernate and OSGI Implementation Made Simple
Last April I kicked off FossESI to discuss how to take existing Java applications built using older technologies and implement them using new technologies like OSGi, Spring, Camel and NOSQL databases. At the time of the kickoff, we intended to begin comparing and contrasting 3 NOSQL databases. And just after that started, I got a real-life...
EJB

Here is an example of OSGi/JMS/MDB comprising of two OSGi bundles deployed in GlassFish:
a) A JMS message producer bundle
b) A JMS message consumer bundle

I will wrap up my experience at eclipsecon. I will also point to my slides and sample source code that shows how to develop EJBs as OSGi service.

As promised earlier, I am going to quickly go over the key points I gathered from the talks I attended at eclipsecon and I also want to brief you about my topic at the conference. Because of a migrane attack earlier today which I firmly believe was caused by severe jat lag, I could not attend as much on day #2 as I had earlier decided to, and that's the very reason why I will keep...
Web Services and XML

Recently a user in GlassFish forum asked about developing JAX-WS web service in an OSGi bundle. Here is a complete sample demonstrating the same. You can download it from here.
As the above diagram shows, we have three components, viz:
1) osgi-service.jar: This is an OSGi bundle which provides a service to other bundles. It contains two POJOs, viz:
a) an interface called sahoo.hybridapp.jaxws1.service.Watch
b) an implementation of the same interface called sahoo.hybridapp.jaxws1.service.WatchImpl.
This bundle also contains a bundle activator called sahoo.hybridapp.jaxws1.service.Activator, which is responsible for registering an instance of WatchImpl in OSGi service registry.
2) web-service.war: This is a Web Application Bundle. A Web Application Bundle is a hybrid application - it's both a Java EE archive as well as an OSGi bundle. In this case, it is a war file as well as an OSGi bundle. It's a war file, because it contains a Servlet based JAX-WS end point. It's an OSGi bundle, because we want to make use of OSGi service in the implementation of our web service. It contains a single class called sahoo.hybridapp.jaxws1.webservice.WatchWebService which is defined like this:
The MANIFEST.MF of web-service.war looks like this:
3) web-service-client.jar: This is a plain jar file which makes use of JAX-WS stack of Java SE environment to invoke our web service. It has a single class called sahoo.hybridapp.jaxws1.webserviceclient.Main. The rest of the classes that are part of this jar are generated by wsdl compiler as part of build.
How to build, deploy and test:
Step 1: Start GlassFish
Step 2: Build and deploy the service bundles
mvn clean install
This will produce two OSGi bundles called osgi-service/target/osgi-service.jar and web-service/target/web-service.war. Deploy these two OSGi bundles to GlassFish by simply copying them to domain1/autodeploy/bundles/ dir as shown below:
cp osgi-service/target/osgi-service.jar web-service/target/web-service.war $glassfish.home/domains/domain1/autodeploy/bundles/
GlassFish will automatically detect that web-service.war is a WAB and will perform necessary deployment of EE artifacts as a result of which a web service end point will be available. You can see something like this appearing in server.log:
WS00018: Webservice Endpoint deployed
WatchWebService listening at address at http://localhost:8080/hybridapp.jaxws1.web-service/WatchWebServiceService
Step 3: Build and run the client
Once the web service is available, run
mvn -f web-service-client/pom.xml
to build web-service-client.jar. This is because the WSDL url, as specified in web-service-client/pom.xml, is not available until the web service is deployed.
To test, simple run:
java -jar web-service-client.jar
You shall see it will print the current time as obtained from the web service which in turn obtrains it from the OSGi service.
Enjoy developing OSGi enabled Java EE applications in GlassFish.
Programming

I was at an OSGi event last week and got to meet a number of OSGi experts. I will share my experience here. I will also brief about the kind of support we have in GlassFish for enterprise OSGi users. Check out our talk on this subject at eclipsecon 2010.

Since GlassFish v3 is built on top of OSGi, it is already capable of being embedded in an existing OSGi runtime. The bootstrapping code was slightly complicated IMO. Recently when Apache Camel committer Charles Moulliard asked me some questions around embedding GlassFish v3 in an OSGi runtime, I decided to revisit the bootstrap module in order to simplify it so that I had less explaining to do. I recently did exactly that. In this blog, I show how using a simple BundleActivator, one can embed GlassFish in an OSGi runtime.
J2EE

autodpeloy-bundles directory has been moved to autodeploy/bundles. In my earlier blog titled Using filesystem operations to manage OSGi bundles in GlassFish, I had mentioned the directory name to be ${domain_dir}/autodeploy-bundles/. Based on feedback from co-developers and users, I have moved it to ${domain_dir}/autodeploy/bundles/. As you may be knowing, ${domain_dir}/autodeploy is already...

Learn how you can use REST APIs to administer OSGi runtime in GlassFish.

In this short article, I will tell you how we found framework extension bundle a useful concept while developing GlassFish V3 to run on OSGi.
OSGi

GlassFish now comes preinstalled with an OSGi Declarative Service implementation.

I just put back an initial implementation of OSGi EEG RFC #66 in GlassFish workspace that allows web applications (war files) to be deployed as OSGi bundles and there by taking advantage of OSGi platform as well as Java EE platform.

Although GlassFish v3 comes with Felix preinstalled, it's pretty easy to make it run on Equinox. Given below are the simple steps...

Earlier I had written how one could use Apache Felix Remote Shell to administer OSGi runtime hosting GlassFish v3. This time, I shall be showing how you can use Felix Web Console to do the same.

Did you know you can telnet to GlassFish v3 runtime and manage it? Well, try the following: "telnet localhost 6666" and then type help...

We have put back initial code that enables GlassFish V3 to run on an *OSGi* R4 platform. This is in addition to it being able to run on its own runtime, i.e., HK2. Since I have been involved in this effort from the very beginning, I will be blogging about it in days to come. Today is just the start.




