1

小さなスプリング rmi の例を開発しようとしています。

次のようにリモートサービスインターフェイスとサービスを作成しました。

計算.java

package com;

public interface Calculation {
  String getName(String name);

}

カルインプ:

package com;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class CalImp implements Calculation {
    static void init(){
        ApplicationContext context = new
                 ClassPathXmlApplicationContext("applicationContext.xml");
        context.getBean("calculationBean");
    }
    String names;
    public String getName(String name){
        return names;
    }
}

私のアプリケーションコンテキストファイルは

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="calculationBean" class="com.CalImp"></bean>

    <bean class="org.springframework.remoting.rmi.RmiServiceExporter" destroy-method="destroy">
        <property name="serviceName" value="Calculation"></property>
        <property name="service" ref="calculationBean"></property>
        <property name="serviceInterface" value="com.Calculation"></property>
        <property name="replaceExistingBinding" value="true"></property>
        <property name="registryPort" value="1199"></property>
    </bean>
</beans>

次に、私のクライアントクラスは次のとおりです。

client-beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="easyClient" class="com.tutorialspoint.Client">
         <property name="easyServer" ref="calculationBean"/>
    </bean>

    <bean id="calculationBean" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
        <property name="serviceUrl" value="rmi://192.168.2.39:1199/Calculation"></property>
        <property name="serviceInterface" value="com.Calculation"></property>
    </bean>
</beans>

クライアント.Java:

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.Calculation;

public class Client {
private Calculation easyServer;
public void setEasyServer(Calculation easyServer) {
    this.easyServer = easyServer;
 }



 public String  getdata(){
     ApplicationContext context = new ClassPathXmlApplicationContext("client-beans.xml");
     easyServer =(Calculation) context.getBean("easyClient");
     String name=easyServer.getName("praveen");
     return name;
 }
}

次のテストユーティリティを使用してテストしようとしましたが、

1) test.java

package com;

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Registry registry;
        String serverAddress="localhost";
        String serverPort="1199";
        String text="Hi";
        System.out.println("sending "+text+" to "+serverAddress+":"+serverPort);
        try{
        // get the “registry”
        registry=LocateRegistry.getRegistry(serverAddress,(new Integer(serverPort)).intValue());
        registry.lookup("Calculation") ;

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }   
}

私がこれを試したとき、私のIP "192.#.#.#"で試しても、次の例外が発生しましたが、まだ運がありません。

sending Hi to localhost:1199
java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused: connect
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
    at sun.rmi.server.UnicastRef.newCall(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at com.Test.main(Test.java:20)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source)
    ... 6 more

この問題で誰かが私を助けることができますか?

4

0 に答える 0