Hessian Service Example
From Resin 4.0 Wiki
(Created page with "=Hessian Service= <p>Writing a Hessian service as a plain-old Java object (POJO) eliminates protocol dependencies and simplifies service testing. </p> <p>The [../hessi...") |
|||
Line 1: | Line 1: | ||
+ | {{Cookbook}} {{Development}} | ||
=Hessian Service= | =Hessian Service= | ||
<p>Writing a Hessian service as a plain-old Java object (POJO) | <p>Writing a Hessian service as a plain-old Java object (POJO) |
Latest revision as of 00:00, 16 June 2012
Contents |
Hessian Service
Writing a Hessian service as a plain-old Java object (POJO) eliminates protocol dependencies and simplifies service testing.
The [../hessian-add/ addition example] built the Hessian service as an extension of HessianService for simplicity. Most services will want to be independent of the Hessian protocol itself.
Files in this tutorial
File | Description |
---|---|
WEB-INF/classes/example/MathService.java |
Interface for the math service. |
WEB-INF/classes/example/MathServiceImpl.java |
The main service implementation. |
WEB-INF/resin-web.xml |
Configures the environment |
demo.jsp |
Client JSP |
demo.php |
Client PHP |
Service Implementation
The MathService implementation is just a Java class that implements the MatchService API.
Example: MathServiceImpl.java
package example; public class MathServiceImpl implements MathService { public int add(int a, int b) { return a + b; } }
Remote Interface
The Java interface describes the remote API. This example has an addition method, add().
Resin's proxy client implementation uses the remote interface to expose the API to the proxy stub. Strictly speaking, though, the Java remote interface is not required for Hessian. A non-Java client will not use the Java interface, except possibly as documentation.
Example: MathService.java
package example; public interface MathService { public int add(int a, int b); }
Service configuration
Example: resin-web.xml
<web-app xmlns="http://caucho.com/ns/resin"> <servlet-mapping url-pattern="/math/*" servlet-class="example.MathService"> <protocol uri="hessian:"/> </servlet-mapping> <remote-client name="math"> <uri>hessian:url=${webApp.url}/math/</uri> <interface>example.MathService</interface> </remote-client> </web-app>
Java Client
The client is identical to the basic example.
Example: demo.jsp
<%@ page import="javax.webbeans.In" %> <%@ page import="example.MathService" %> <%! @In MathService math; %> <pre> 3 + 2 = <%= math.add(3, 2) %> 3 - 2 = <%= math.sub(3, 2) %> 3 * 2 = <%= math.mul(3, 2) %> 3 / 2 = <%= math.div(3, 2) %> </pre>
results
3 + 2 = 5 3 - 2 = 1 3 * 2 = 6 3 / 2 = 1
PHP Client
The client is identical to the basic example.
Example: demo.php
<?php $math = java_bean("math"); ?> <pre> 3 + 2 = <?= $math->add(3, 2) ?> 3 - 2 = <?= $math->sub(3, 2) ?> 3 * 2 = <?= $math->mul(3, 2) ?> 3 / 2 = <?= $math->div(3, 2) ?> </pre>
results
3 + 2 = 5 3 - 2 = 1 3 * 2 = 6 3 / 2 = 1