Simple Messaging Example using Hessian
According to Wikipedia, Hessian is a binary web service protocol that makes web services usable without requiring a large framework, and without learning a new set of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments.
From what i’ve tested, perhaps it is somekind of light version of remote EJB3 because i dont have to include so many libraries like EJB3. Altough EJB3 and Hessian are not apple-to-apple comparable, because both arent using the same messaging protocol. EJB3 use RMI-IIOP while Hessian use WebService.
So let’s start with the code. First, for the server part (im using tomcat), create a web project on Netbeans 6.9 and creating a simple interface class,
package com.edw.service; public interface HelloService { String sayHelloTo(String target); }
after that, i create a simple servlet which implements HelloService interface,
package com.edw.servlet; import com.caucho.hessian.server.HessianServlet; import com.edw.service.HelloService; public class HelloServlet extends HessianServlet implements HelloService { public String sayHelloTo(String target) { return "hello "+target+", have a nice day"; } }
dont forget to register your servlet to web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.edw.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
next, is creating the client application. I start with a simple java netbeans project, a main class and an interface, i copied the exact copy of HelloService and then put it on my client project,
package com.edw.service; public interface HelloService { String sayHelloTo(String target); }
and my main class
package com.edw.main; import com.caucho.hessian.client.HessianProxyFactory; import com.edw.service.HelloService; public class Main { String url = "http://localhost:809/HessianServer/HelloServlet"; HessianProxyFactory factory = new HessianProxyFactory(); public Main() { } private void doTest() { try { HelloService hello = (HelloService) factory.create(HelloService.class, url); System.out.println(hello.sayHelloTo("si pepe")); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Main main = new Main(); main.doTest(); } }
here is the screenshot of my project
This is what the messaging looks like
another good competitor for Spring Http Invoker.
Have fun 😉
No Comments