[SPRING] RMI 호스트를 구성하여 액세스하는 클라이언트 포트를 알아야합니다.
SPRINGRMI 호스트를 구성하여 액세스하는 클라이언트 포트를 알아야합니다.
저는 스프링 RMI에서 일하고 있으며 호스트와 클라이언트 하나를 설정했습니다.
아래는 내 호스트의 코드입니다. 호스트가 어떤 클라이언트가 그것에 액세스하고 있는지를 알아야하는 방식으로 수정하고 싶습니다. 즉, 서버는 어떤 클라이언트 포트가 서버에 액세스하고 있는지 알아야합니다.
Spring RMI에서 어떻게 이것을 할 수 있습니까?
인터페이스 : -
package com.javatpoint;
public interface Calculation {
int cube(int number);
}
수업 :-
package com.javatpoint;
public class CalculationImpl implements Calculation{
@Override
public int cube(int number) {
return number*number*number;
}
}
마지막으로 호스트 구성 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>
다음은 사용되는 수업입니다.
인터페이스 : -
package com.javatpoint;
public interface Calculation {
int cube(int number);
}
구현 클래스 : -
public class CalculationImpl implements Calculation{
public int cube(int number) {
return number*number*number;
}
}
와 메인 클래스
package com.javatpoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Host
{
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println("Waiting for requests");
}
}
지금 클라이언트 호스트를 얻는 방법을 추가하는 방법을 조언하시기 바랍니다 미리 감사드립니다
해결법
-
==============================
1.여러 가지 방법으로 문제를 해결할 수 있습니다.
여러 가지 방법으로 문제를 해결할 수 있습니다.
1) 원격 인터페이스에 registerClient (String clientId, Object clientInfo)와 같은 메소드를 하나 추가 할 수 있습니다. 이 메서드의 추가 매개 변수에서 다른 관련 정보를 전달할 수 있습니다. RMI 서버는이 정보를 ConcurrentHashMap과 같은 데이터 구조에 간단하게 저장할 수 있습니다.
2) registerClient를 호출 한 후, clientId를 cube (String clientId, int num)와 같은 원격 메소드의 매개 변수 중 하나로 전달하여 RMI 서버에서 다른 원격 메소드를 호출 할 수 있습니다.
3) 클라이언트 IP 만 있으면 Java는 이미 찾고있는 정보를 제공하는 RemoteServer의 getClientHost () API를 제공합니다.
-
==============================
2.나에게 원격 세션 패턴의 경우처럼 들린다.
나에게 원격 세션 패턴의 경우처럼 들린다.
from https://stackoverflow.com/questions/32156010/configuring-rmi-host-so-that-it-should-know-which-client-port-is-accessing-it by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 어노테이션으로 맵핑 된 Action 클래스로 struts-spring 플러그인으로 struts convention Plugin을 설정하는 방법 (0) | 2019.01.24 |
---|---|
[SPRING] Spring-Data-JPA ManyToMany 관계와 추가 컬럼 (0) | 2019.01.24 |
[SPRING] where 절에서리스트 <t>에 대한 최대 절전 쿼리 (0) | 2019.01.24 |
[SPRING] Spring AspectJ, 메소드 OR 클래스가 주석 처리 된 메소드 실행 전에 pointcut (0) | 2019.01.24 |
[SPRING] 독립 실행 형 컨텍스트 및 SpringBoot 1.2.5가 포함 된 MockMvcBuilders를 사용한 파일 업로드의 단위 테스트 (0) | 2019.01.24 |