原文地址:http://www.studytrails.com/frameworks/spring/spring-remoting-hessian.jsp
The previous tutorial presents an overview of spring remoting and lists down various remoting protocols supported by Spring. In this tutorial we look at Spring support for Hessian. Hessian is a web service protocol that transfers binary data between a remote service and its client. Hessian has been released by Caucho Technology. It requires that the web service be hosted on an http server. The client uses HTTP protocol to invoke remote methods on the server. The important classes are : -
org.springframework.remoting.caucho.HessianServiceExporter - This exports the specified service as a servlet based http request handler. Hessian services exported by this class can be accessed by any hessian client.
org.springframework.remoting.caucho.HessianProxyFactoryBean - This is the factory bean for Hessian clients. The exposed service is configured as a spring bean. The ServiceUrl property specifies the URL of the service and theServiceInterface property specifies the interface of the implemented service.
The example below is a GreetingService implemented as a remote Hessian service.
Create the GreetingService interface as shown below.
Create a method named getGreeting() that takes a name as a parameter and returns the greeting message (see line 5 below).
1
2
3
4
5
6
|
package
com.studytrails.tutorials.springremotinghessianserver;
public
interface
GreetingService {
String getGreeting(String name);
}
|
Create a class GreetingServiceImpl as shown below.
It implements the GreetingService interface (described earlier)
Implement the getGreeting() method by sending a greeting message (see lines 6-8 below).
1
2
3
4
5
6
7
8
9
10
|
package
com.studytrails.tutorials.springremotinghessianserver;
public
class
GreetingServiceImpl
implements
GreetingService{
@Override
public
String getGreeting(String name) {
return
"Hello "
+ name +
"!"
;
}
}
|
Create the hessian-servlet.xml file (see below).
Declare the 'greetingService' (see lines 14-15 below).
Export the 'greetingService' using Spring's HessianServiceExporter class (see lines 17-21 below).
Note the following properties of HessianServiceExporter class:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc
=
"http://www.springframework.org/schema/mvc"
xmlns:context
=
"http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<
bean
id
=
"greetingService"
class
=
"com.studytrails.tutorials.springremotinghessianserver.GreetingServiceImpl"
/>
<
bean
name
=
"/greetingService.http"
class
=
"org.springframework.remoting.caucho.HessianServiceExporter"
>
<
property
name
=
"service"
ref
=
"greetingService"
/>
<
property
name
=
"serviceInterface"
value
=
"com.studytrails.tutorials.springremotinghessianserver.GreetingService"
/>
</
bean
>
</
beans
>
|
Create the web.xml file (see below).
Create the servlet mapping for the url pattern '*.http' (see line 16 below) for Spring's DispatcherServlet (see line 10 below)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<
web-app
>
<
display-name
>Spring Remoting: Hessian Server</
display-name
>
<
servlet
>
<
servlet-name
>hessian</
servlet-name
>
<
servlet-class
>org.springframework.web.servlet.DispatcherServlet</
servlet-class
>
<
load-on-startup
>1</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>hessian</
servlet-name
>
<
url-pattern
>*.http</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
|
Create the GreetingService interface as shown below.
Copy the GreetingService interface created for Hessian Server (described above) and paste it in Hessian Client source code while retaining the java package structure.
Note: For reference, the source code is shown below.
1
2
3
4
5
6
|
package
com.studytrails.tutorials.springremotinghessianserver;
public
interface
GreetingService {
String getGreeting(String name);
}
|
Create a class TestSpringRemotingHessian shown below to test Spring Hessian Remoting.
Load spring configuration file (see line 11 below)
Get a reference to GreetingService using the bean name 'greetingService' (see line 12 below)
Call the GreetingService.getGreting() method by passing the name 'Alpha' (see line 13 below)
Print the greeting message (see line 14 below).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package
com.studytrails.tutorials.springremotinghessianclient;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
com.studytrails.tutorials.springremotinghessianserver.GreetingService;
public
class
TestSpringRemotingHessian {
public
static
void
main(String[] args) {
ApplicationContext context =
new
ClassPathXmlApplicationContext(
"spring-config-client.xml"
);
GreetingService greetingService = (GreetingService)context.getBean(
"greetingService"
);
String greetingMessage = greetingService.getGreeting(
"Alpha"
);
System.out.println(
"The greeting message is : "
+ greetingMessage);
}
}
|
Create the spring-config-client.xml file (see below).
Declare the 'greetingService' using Spring's HessianProxyFactoryBean class (see lines 13-16 below).
Note the following properties of HessianProxyFactoryBean class:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop
=
"http://www.springframework.org/schema/aop"
xmlns:context
=
"http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<
bean
id
=
"greetingService"
class
=
"org.springframework.remoting.caucho.HessianProxyFactoryBean"
>
<
property
name
=
"serviceUrl"
value
=
"http://localhost:8080/springremotinghessianserver/greetingService.http"
/>
<
property
name
=
"serviceInterface"
value
=
"com.studytrails.tutorials.springremotinghessianserver.GreetingService"
/>
</
bean
>
</
beans
>
|
This sample program has been packaged as a jar installer which will copy the source code (along with all necessary dependencies)on your machine and automatically run the program for you as shown in the steps below. To run the sampleprogram, you only need Java Runtime Environment (JRE) on your machine and nothing else.
(Alternatively you can go the folder containing the springremotinghessianserver-installer.jar and execute the jar using java -jar springremotinghessianserver-installer.jar command)
This sample program has been packaged as a jar installer which will copy the source code (along with all necessary dependencies)on your machine and automatically run the program for you as shown in the steps below. To run the sampleprogram, you only need Java Runtime Environment (JRE) on your machine and nothing else.
(Alternatively you can go the folder containing the springremotinghessianclient-installer.jar and execute the jar using java -jar springremotinghessianclient-installer.jar command)
This source code for this program is downloaded in the folder specified by you (say, C:\Temp) as an eclipse project called springremotinghessianserver . All the required libraries have also been downloaded and placed in the same location. You can open this project from Eclipe IDE and directly browse the source code. See below for details of the project structure.
The WAR file for this example is available as springremotinghessianserver.war in the download folder specified by you earlier (e.g. C:\Temp). The path for the WAR file is <DOWNLOAD_FOLDER_PATH>/springremotinghessianserver/dist/springremotinghessianserver.war.
This WAR file can be deployed in any webserver of your choice and example can be executed.
This source code for this program is downloaded in the folder specified by you (say, C:\Temp) as an eclipse project called springremotinghessianclient . All the required libraries have also been downloaded and placed in the same location. You can open this project from Eclipe IDE and directly browse the source code. See below for details of the project structure.