サービスコールRMIリモートメソッドコール例【Springプロファイルベース】
7142 ワード
文句を言うのはテーマとは関係ありません.
前編のブログでは、RMIリモートメソッド呼び出しの例を分析し、例を通して、実際には、呼び出されるとサービスが宣言され、サービス側と呼ばれ、自動呼び出しはサービスが呼び出され、クライアントと呼ばれていることをまとめることができます.
リモートコールである以上、サーバ側は、Webサービスなどのサービスオブジェクトを見つけることができるように、宣言されたラベルを供給し、サービス側はwsdlアドレスとして宣言し、クライアントはwsdlを通じてこのサービスオブジェクトを見つけることができます.サーバがサービスタグを宣言すると、クライアントはそれに従うだけです.
したがって,分散呼び出しをどのような方法で実現しても,どのようなプロトコルを使用しても,基本的な歩調や基本的な考え方は通じる.
前のブログでは、通常のjavaプロジェクトを使用して、サービスを発表または呼び出します.ハードコーディングという方法は,いったん変更すると再コンパイル配置が必要であるが,xmlホット配置ほど速くないことも知られている.
このブログではspringを使用してrmiが発表したアドレスや発表したクラスなどのサービス構成情報を管理します.
サービス:
インタフェース部分:【一般インタフェース】
実現部分:【普通実現】
エンティティ・クラスが渡される場合は、シーケンス化が必要です.
サービス側springプロファイル:応答するコメント
毎日同じ理屈
「上下五千年、龍の見る火は滅びない.昔は愚公の志があったが、今は最初から越えて......」新世紀の敷居に立って、私たちの追求は祖国の輝かしい喜びを美しい明日に飛ばすことだ.
プロファイルを手動でロードするのではなく、サーバを使用して起動します.xml
OK、サーバが起動すると、プロファイルを読み取り、サービスを宣言できます.
最初のブログでmainメソッドにポートを登録したり、jndi名や応答を宣言したりするクラスは必要ありません.
クライアントはspringファイルを使用します.
デルのクライアントは、Webプロジェクトではなくjavaプロジェクトを使用しています.プロファイルを直接ロードするには、次のようにします.
これにより,変更再コンパイルの問題を解決できることがxmlの利点である.ここでrmi法、jdk 1.5以降、rmiコマンドを使用してstubやskeletonクラスを生成する必要はなく、動的に自動的に生成されます.
サービス側がサーバを使用したくない場合は、クライアントにプロファイルを手動でロードし、サービスを宣言できます.
文章は終わってみんなに次のプログラマーのいくつかの冗談の語録を分かち合います:ニュースを見て中国の入力法が世界で1位だと言います!リードしたらどうですか.西洋文字は入力法を必要としない.比べ物にならない.
前編のブログでは、RMIリモートメソッド呼び出しの例を分析し、例を通して、実際には、呼び出されるとサービスが宣言され、サービス側と呼ばれ、自動呼び出しはサービスが呼び出され、クライアントと呼ばれていることをまとめることができます.
リモートコールである以上、サーバ側は、Webサービスなどのサービスオブジェクトを見つけることができるように、宣言されたラベルを供給し、サービス側はwsdlアドレスとして宣言し、クライアントはwsdlを通じてこのサービスオブジェクトを見つけることができます.サーバがサービスタグを宣言すると、クライアントはそれに従うだけです.
したがって,分散呼び出しをどのような方法で実現しても,どのようなプロトコルを使用しても,基本的な歩調や基本的な考え方は通じる.
前のブログでは、通常のjavaプロジェクトを使用して、サービスを発表または呼び出します.ハードコーディングという方法は,いったん変更すると再コンパイル配置が必要であるが,xmlホット配置ほど速くないことも知られている.
このブログではspringを使用してrmiが発表したアドレスや発表したクラスなどのサービス構成情報を管理します.
サービス:
インタフェース部分:【一般インタフェース】
package com.rmi.server;
import com.entity.Person;
public interface Server {
String helloWorld(String name);
Person getPerson(String name, int age) ;
}
実現部分:【普通実現】
package com.rmi.server;
import com.entity.Person;
// , UnicastRemoteObject,
public class ServerImpl implements Server {
@Override
public String helloWorld(String name) {
// TODO Auto-generated method stub
return name + ",helloworld";
}
@Override
public Person getPerson(String name, int age){
// TODO Auto-generated method stub
return new Person(name, age);
}
}
エンティティ・クラスが渡される場合は、シーケンス化が必要です.
package com.entity;
import java.io.Serializable;
public class Person implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
private String name;
private int age;
//
public Person() {
}
//
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
サービス側springプロファイル:応答するコメント
<?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" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="testSpringRMI" class="com.rmi.server.ServerImpl"/>
<!-- rmi -->
<bean id="rmiServiceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">
<!-- service -->
<property name="service" ref="testSpringRMI"></property>
<!-- serviceName -->
<property name="serviceName" value="testrmiSpring"/>
<!-- -->
<property name="serviceInterface" value="com.rmi.server.Server"/>
<!-- , 1099 -->
<property name="registryPort" value="1099"/>
</bean>
</beans>
毎日同じ理屈
「上下五千年、龍の見る火は滅びない.昔は愚公の志があったが、今は最初から越えて......」新世紀の敷居に立って、私たちの追求は祖国の輝かしい喜びを美しい明日に飛ばすことだ.
プロファイルを手動でロードするのではなく、サーバを使用して起動します.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>rmiTestServerSpring</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:com/config/applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
OK、サーバが起動すると、プロファイルを読み取り、サービスを宣言できます.
最初のブログでmainメソッドにポートを登録したり、jndi名や応答を宣言したりするクラスは必要ありません.
クライアントはspringファイルを使用します.
<?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" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- rmi -->
<bean id="testrmiSpring" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<!-- url serviceName -->
<property name="serviceUrl" value="rmi://:1099/testrmiSpring"/>
<!-- -->
<property name="serviceInterface" value="com.rmi.server.Server"/>
</bean>
</beans>
デルのクライアントは、Webプロジェクトではなくjavaプロジェクトを使用しています.プロファイルを直接ロードするには、次のようにします.
package com.client;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.entity.Person;
import com.rmi.server.Server;
public class TestSpringClient {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-beans.xml");
Server testrmiSpring = (Server) context.getBean("testrmiSpring");
System.out.println(testrmiSpring.helloWorld(" rmi"));
Person person=testrmiSpring.getPerson("lhy", 22);
System.out.println(person.getName());
}
}
これにより,変更再コンパイルの問題を解決できることがxmlの利点である.ここでrmi法、jdk 1.5以降、rmiコマンドを使用してstubやskeletonクラスを生成する必要はなく、動的に自動的に生成されます.
サービス側がサーバを使用したくない場合は、クライアントにプロファイルを手動でロードし、サービスを宣言できます.
文章は終わってみんなに次のプログラマーのいくつかの冗談の語録を分かち合います:ニュースを見て中国の入力法が世界で1位だと言います!リードしたらどうですか.西洋文字は入力法を必要としない.比べ物にならない.