Как было сказано в предыдущих комментариях, вы всегда можете раскрыть свою логику через RMI, Hessian / Burlap, JAX-WS / JAX-RPC или даже JMS.
В случае RMI или JMS вам даже не нужно менять бизнес-интерфейс, чтобы выставить его в качестве удаленной службы. Это просто вопрос конфигурации.
Например, предположим, у вас есть бизнес-интерфейс:
public interface HelloWorld {
public String getMessage();
}
и его реализация:
public class SimpleHelloWorld implements HelloWorld {
public String getMessage() {
return "Hello World";
}
}
Чтобы предоставить эту службу через RMI на локальном хосте с портом 9000, необходимо добавить следующий фрагмент кода в конфигурацию Spring:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans">
<bean id="helloWorldService"
class="com.apress.prospring2.ch15.remoting.SimpleHelloWorld"/>
<bean id="serviceExporter"
class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName" value="HelloWorld" />
<property name="service" ref="helloWorldService" />
<property name="serviceInterface"
value="com.apress.prospring2.ch15.remoting.HelloWorld" />
<property name="registryPort" value="9000" />
</bean>
Ваша конфигурация на стороне клиента должна иметь следующую конфигурацию (appCtx.xml):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans">
<bean id="helloWorldService"
class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://localhost:9000/HelloWorld" />
<property name="serviceInterface"
value="com.apress.prospring2.ch15.remoting.HelloWorld"/>
</bean>
<bean id="helloWorldClient"
class="com.apress.prospring2.ch15.remoting.rmi.HelloWorldClient">
<property name="helloWorldService" ref="helloWorldService" />
</bean>
</beans>
Вот простой клиент:
public class HelloWorldClient {
private HelloWorld helloWorldService;
public static void main(String[] args) throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("appCtx.xml");
HelloWorldClient helloWorldClient =
(HelloWorldClient) ctx.getBean("helloWorldClient");
helloWorldClient.run();
}
public void run() {
System.out.println(helloWorldService.getMessage());
}
public void setHelloWorldService(HelloWorld helloWorldService) {
this.helloWorldService = helloWorldService;
}
* *} Тысяча двадцать-один
Вот и все. Весна обо всем позаботится.