【发布时间】:2015-08-22 12:16:32
【问题描述】:
我一直在做spring 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");
}
}
现在请告知如何添加方法获取客户端主机提前谢谢
【问题讨论】:
-
为什么?它不是固定的。它没有传达任何有用的信息。
-
@EJP 好吧,有一种情况是,许多不同的客户端正在访问我的 rmi 服务,并且客户端本身在不同的端口上运行,所以我只想知道哪个客户端从哪个端口访问我的服务
-
另外请告知我可以实现我自己的自定义拦截器,它将捕获作为客户端访问 rmi 服务的信息的端口
-
那些客户端在随机端口上运行,在客户端的整个生命周期中这些端口可能会发生变化,并且对于不同主机上的不同客户端可能会意外地相同。这是毫无意义。如果您需要区分客户端,让他们登录并为他们提供令牌,或者为每个客户端使用单独的远程会话对象。