服务端
public interface RMIService {
/**
* 发送指令
*
* @param erpinsid
* @return
*/
int sendOrder(String erpinsid);
}
public class RMIServiceImpl implements RMIService {
/**
* 发送指令
*
* @param erpinsid
* @return
*/
public int sendOrder(String erpinsid) {
return new OrderService().sendOrder(erpinsid);
}
}
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RMIClientSocketFactory;
import java.rmi.server.RMIServerSocketFactory;
import org.springframework.remoting.rmi.RmiServiceExporter;
public class RmiServiceExporterEx extends RmiServiceExporter {
@Override
protected Registry getRegistry(String registryHost, int registryPort, RMIClientSocketFactory clientSocketFactory, RMIServerSocketFactory serverSocketFactory) throws RemoteException {
if (registryHost != null) {
// Host explictly specified: only lookup possible.
if (logger.isInfoEnabled()) {
logger.info("Looking for RMI registry at port '" + registryPort + "' of host [" + registryHost + "]");
}
Registry reg = null;
try {
reg = LocateRegistry.getRegistry(registryHost, registryPort, clientSocketFactory);
testRegistry(reg);
} catch (Exception e) {
LocateRegistry.createRegistry(registryPort);
reg = LocateRegistry.getRegistry(registryHost, registryPort, clientSocketFactory);
testRegistry(reg);
}
return reg;
}
else {
return getRegistry(registryPort, clientSocketFactory, serverSocketFactory);
}
}
}
import java.rmi.RemoteException;
import org.apache.log4j.Logger;
import org.springframework.remoting.rmi.RmiServiceExporter;
import com.nstc.erpinterface.util.LogUtil;
public class RmiServiceController {
private static final Logger LOGGER = Logger.getLogger(RmiServiceController.class);
public static void startRmiService() {
RmiServiceExporter rmiServiceExporter = new RmiServiceExporterEx();
rmiServiceExporter.setServiceName("ErpRMIService");
rmiServiceExporter.setService(new RMIServiceImpl());
rmiServiceExporter.setServiceInterface(RMIService.class);
rmiServiceExporter.setRegistryPort(60000);
rmiServiceExporter.setRegistryHost("127.0.0.1");
try {
rmiServiceExporter.afterPropertiesSet();
} catch (RemoteException e) {
LOGGER.error(LogUtil.getStackTrace(e));
}
}
}
客户端
public interface RMIService {
/**
* 发送指令
*
* @param erpinsid
* @return
*/
int sendOrder(String erpinsid);
}
public class RMIClient{
public static void main(String[] args) {
RmiProxyFactoryBean rmiProxyFactoryBean = new RmiProxyFactoryBean();
rmiProxyFactoryBean.setServiceInterface(RMIService.class);
rmiProxyFactoryBean.setServiceUrl("rmi://" + "serverIp" + ":60000/ErpRMIService");
rmiProxyFactoryBean.afterPropertiesSet();
RMIService rmiservice = (RMIService) rmiProxyFactoryBean.getObject();
rmiservice.sendOrder("1234567890");
}
}