Platinum Partner

Hessian Service and Client on an OSGi Container : Part 2

In my last post, I introduced hessian extender. Now, I will show  how to create service that will be registered by the last extender, and a Java application that will communicate with it.

First, we create a simple service interface witch is inspired here :

package com.jtunisie.osgi.hessian;  
import com.jtunisie.osgi.hessian.exceptions.ServiceException;  
public interface IService {  
 public String execute() throws ServiceException;  

Next, we create a service implementation that will extend HessianServlet and implement and old interface:

package com.jtunisie.osgi.hessian.impl;

import com.caucho.hessian.server.HessianServlet;
import com.jtunisie.osgi.hessian.IService;

import com.jtunisie.osgi.hessian.exceptions.ServiceException;

public class Service extends HessianServlet implements IService {

public void publish() {

public String execute() throws ServiceException {
return "jTunisie";

We use Spring DM to register this service as com.caucho.hessian.server.HessianServlet name and we note that publish method will be called as default init method after all spring IoC
service reference injection.


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""

<bean id="serviceDebug" class="com.jtunisie.osgi.hessian.impl.Service"/>

<osgi:service interface="com.caucho.hessian.server.HessianServlet" ref="serviceDebug">
<entry key="url" value="/jtunisie"/>



Service will be registred under /jtunisie url.

At the client side, we need only the api bundle and hessian library :


package com.jtunisie.osgi.debug.test;

import com.caucho.hessian.client.HessianProxyFactory;
import com.jtunisie.osgi.hessian.IService;
import com.jtunisie.osgi.hessian.exceptions.ServiceException;

public class Main {

public static void main(String[] args) throws MalformedURLException, ServiceException {
HessianProxyFactory factory = new HessianProxyFactory();
IService service = (IService) factory.create(IService.class, "http://localhost:8080/jtunisie");

At the end, I want to thank Roman who let me share his work and my team that helped me to have and accomplish this work.
The full source code is available here as 2 maven projects:
svn checkout hessianextender-read-only


{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ }}
{{ parent.authors[0].realName ||}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks