Blogs by topic Blogs and user ss141213
| • 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...

If you are creating a jar and you see it having an empty manifest, then blame it on the poor documentation of the API.

What do you expect Class.getAnnotations() do when it can't load one of the annotation types present in the class? Read on...
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.



