2015-08-24 2 views
-2

я передать параметр, чтобы от клиента к серверу через весну RMI, пожалуйста, посоветуйте, как достичь этого ниже класс я editiedотправка параметров от клиента к серверу через RMI

package com.javatpoint; 

import org.aopalliance.intercept.MethodInvocation; 
import org.springframework.remoting.support.RemoteInvocation; 

@SuppressWarnings("serial") 
public class CalculationImpl extends RemoteInvocation implements Calculation { 

    public int cube(int number) { 
     return number*number*number; 
    } 


    public CalculationImpl (MethodInvocation methodInvocation) { 
     super(); 

     // Invoked in superclass 
     this.addAttribute("awer", "test1111"); 
    } 


    private void addAttribute(String string, String string2) { 


    } 
} 

и XML для клиента

<beans> 

    <bean id="calculationBean" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> 
     <property name="remoteInvocationFactory" ref="invocationFactory"/> 
     <property name="serviceUrl" value="rmi://localhost:1099/CalculationService"></property> 
     <property name="serviceInterface" value="com.javatpoint.Calculation"></property> 

    </bean> 

    <bean id="invocationFactory" class="com.javatpoint.CalculationImpl"/> 
</beans> 

теперь, пожалуйста, посоветуйте, как настроить rmiservice экспортера, так что он должен Получать значение посланный fromt он клиент позволяет сказать, как показано выше, в клиенте XML значение параметра awer является test1111 теперь я хочу настроить мой rmiservice exporter , чтобы он получил это значение и отобразил его

ниже мой rmi service export..

<bean id="calculationBean" class="com.javatpoint.CalculationImpl"></bean> 
    <bean class="org.springframework.remoting.rmi.RmiServiceExporter"> 
     <property name="service" ref="calculationBean"></property> 
     <property name="serviceInterface" value="com.javatpoint.Calculation"></property> 
     <property name="serviceName" value="CalculationService"></property> 
     <property name="registryPort" value="1099"></property> 

    </bean> 
+0

Ваш вопрос немного неясен, вы хотите, чтобы удаленный объект мог получать строки для примера «test1111» и распечатать его?! – QuakeCore

+0

да, пожалуйста, сообщите, как достичь этого, я пытаюсь удаленный объект, чтобы иметь возможность получать строки –

ответ

0

В вашем интерфейсе вычисления должен быть метод, который принимает параметр String в качестве параметра.

public interface Calculation { 
void print(String text); 
void registerIpAddress(String ip); 
} 

public class CalculationImpl implements Calculation { 

@Override 
void print(String text) { 
    System.out.println(text); 
} 
    @Override 
    void registerIpAddress(String ip){ 
      List.add(ip);//or whatever you want 
} 

Ваши xml-файлы для клиента и хоста являются правильными, но вам не хватает нескольких вещей.

applicationContext.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="calculationBean" class="com.javatpoint.CalculationImpl"></bean> 
<bean class="org.springframework.remoting.rmi.RmiServiceExporter"> 
    <property name="service" ref="calculationBean"></property> 
    <property name="serviceInterface" value="com.javatpoint.Calculation"></property> 
    <property name="serviceName" value="CalculationService"></property> 
    <property name="replaceExistingBinding" value="true"></property> 
    <property name="registryPort" value="1099"></property> 
</bean> 
</beans> 

клиент-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="calculationBean" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> 
<property name="serviceUrl" value="rmi://localhost:1099/CalculationService"></property> 
<property name="serviceInterface" value="com.javatpoint.Calculation"></property> 
</bean> 
</beans> 

вам необходимо создать новый экземпляр applicaionContext для того, чтобы это работало

class server { 
    public static void main(String[] args) { 
     ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
    } 
} 

наконец вас необходимо запустить своего клиента

public static void main(String[] args) { 
    ApplicationContext context = new ClassPathXmlApplicationContext("client-beans.xml"); 
    Calculation calculation = (Calculation) context.getBean("calculationBean"); 
    calculation.print("Copied&Pasted!"); 

    try { 
     calculation.registerIpAddress(InetAddress.getLocalHost().getHostAddress()); 
    } catch (UnknownHostException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
+0

core ... Спасибо, вы можете посоветовать, как мы можем отправить порт no, поскольку клиенты несколько, и они должны работать в разные порты, поэтому сервер должен знать, что запрос поступает от клиента, поэтому для того, чтобы знать, что порт клиента является eesntial, спасибо inadvance –

+0

, если вы говорите о порту, указанном в свойстве serviceUrl, то все клиенты не должны использовать тот же порт в порядке для получения удаленного объекта, установленного в реестре сервера. – QuakeCore

+0

Спасибо за ответ нет. Я говорю о разных портах, которые работают с клиентами на другом порту. Я хочу получить порт клиентов. Pls –

Смежные вопросы