发布个rmi服务居然出现如下:
17.05.2009 10:19:50 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter - Looking for RMI registry at port '1099'
17.05.2009 10:19:54 [main] DEBUG org.springframework.remoting.rmi.RmiServiceExporter - RMI registry access threw exception
java.rmi.ConnectException: Connection refused to host: 172.18.7.235; nested exception is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
at sun.rmi.registry.RegistryImpl_Stub.list(Unknown Source)
at org.springframework.remoting.rmi.RmiServiceExporter.testRegistry(RmiServiceExporter.java:411)
at org.springframework.remoting.rmi.RmiServiceExporter.getRegistry(RmiServiceExporter.java:391)
at org.springframework.remoting.rmi.RmiServiceExporter.getRegistry(RmiServiceExporter.java:370)
at org.springframework.remoting.rmi.RmiServiceExporter.getRegistry(RmiServiceExporter.java:331)
at org.springframework.remoting.rmi.RmiServiceExporter.prepare(RmiServiceExporter.java:263)
at org.springframework.remoting.rmi.RmiServiceExporter.afterPropertiesSet(RmiServiceExporter.java:227)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
at cn.edu.hust.mes.webservice.CallWebServices.<clinit>(CallWebServices.java:31)
at cn.edu.hust.mes.opcapp.OpcApplication.main(OpcApplication.java:15)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:180)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
28 more
17.05.2009 10:19:54 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter - Could not detect RMI registry - creating new one
17.05.2009 10:19:54 [main] DEBUG org.springframework.remoting.rmi.RmiServiceExporter - RMI service [cn.edu.hust.mes.webservice.OpcPlcRmiServiceImpl@dac21] is an RMI invoker
17.05.2009 10:19:54 [main] DEBUG org.springframework.aop.framework.JdkDynamicAopProxy - Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [cn.edu.hust.mes.webservice.OpcPlcRmiServiceImpl@dac21]
17.05.2009 10:19:54 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter - Binding service 'opcManager' to RMI registry: RegistryImpl[UnicastServerRef [liveRef: [endpoint:[172.18.7.235:1099](local),objID:[0:0:0, 0]]]]
--------------------------------------------------
可见:Binding service 'opcManager' to RMI registry: RegistryImpl[UnicastServerRef [liveRef: [endpoint:[172.18.7.235:1099](local),objID:[0:0:0, 0]]]]
RMI其实发布成功了...
为什么开始有错呢?
查看源代码发现:其实是Spring的Debug log
他会先看有没rmi注册
org.springframework.remoting.rmi.RmiServiceExporter.testRegistry(RmiServiceExporter.java:411)没有log下再 Could not detect RMI registry - creating new one所以屏蔽该Log4j配置文件中加如:
log4j.logger.org.springframework.remoting.rmi.RmiServiceExporter=INFO
分享到:
相关推荐
下面将详细阐述Spring RMI服务的实现原理、配置过程以及如何自动化发布服务。 首先,了解RMI的基本概念是必要的。RMI是Java提供的一种标准接口,它允许一个Java对象调用远程主机上的另一个Java对象的方法,就像调用...
2.3 配置Spring:在Spring配置文件(如`applicationContext.xml`)中,使用`<bean>`标签定义远程服务实现,并使用`RmiServiceExporter`发布服务: ```xml <bean id="rmiExporter" class="org.springframework....
- **`<bean>`标签中的`rmi:`命名空间**:Spring配置文件中可以使用`<rmi:registry>`来定义RMI注册表,`<rmi:export>`用于导出远程服务。 - **`RmiServiceExporter`**:Spring提供的bean,负责将Spring Bean暴露为...
<property name="serviceUrl" value="rmi://localhost:1099/myService" /> ``` 5. 客户端调用:在客户端代码中,可以直接使用`myRemoteService` Bean来调用服务器端的服务方法。 ```java @Autowired private ...
<property name="serviceUrl" value="rmi://localhost:1099/myRemoteService"/> ``` 以上就是关于Spring集成RMI的相关知识点,包括基本概念、配置、优势、优化策略以及与Spring Boot的结合。通过理解和掌握这些...
spring-rmi-示例 项目是从 code.google.com/p/springrmiexample 导出的,我这边稍作修改 这个项目是如何在 Spring 的帮助下设置 RMI 服务器和客户端的示例。 该项目包含2个子项目: Spring RMI 示例服务器,即 Web...
通过Spring的Bean工厂,我们可以将RMI服务声明为Spring Bean,这样就可以利用Spring的依赖注入来配置和服务。此外,Spring AOP可以用于在远程方法调用前后添加拦截逻辑,如日志记录、性能监控等。 具体到这个压缩包...
总的来说,"spring+rmi非本地实现"项目展示了如何利用Spring和RMI来构建分布式服务,提供了一种跨越网络调用的方法,增强了系统的可扩展性和解耦性。理解和掌握这部分知识对于开发分布式系统具有重要意义。
4. **异常处理**:Spring 可以帮助封装 RMI 调用中可能出现的异常,提供统一的错误处理策略。 通过这个 "java Spring+RMI 入门程序源代码",开发者可以学习如何在 Spring 框架中集成 RMI 技术,创建可扩展、高可用...
- 在`rmi_spring_server`项目中,包含了服务器端的代码,实现了RMI服务的发布。 - 在`rmi_spring_client`项目中,包含了客户端的代码,实现了对服务器端RMI服务的调用。 通过上述整合,我们可以构建一个健壮的...
<property name="serviceUrl" value="rmi://localhost:1099/MyRemoteService" /> ``` 5. **运行与测试**:启动服务器端,然后在客户端调用代理对象的方法进行测试。例如: ```java MyRemoteService remote...
<property name="serviceUrl" value="rmi://localhost:1099/MyService" /> ``` 4. **使用远程服务**:客户端可以直接通过`myServiceClient`对象调用远程服务的方法,如`doSomething()`。 ### 三、RMI 库与...
在Spring的XML配置文件中,我们创建一个`<bean>`来表示远程服务,并使用`<rmi:export>`标签将该服务暴露为RMI服务: ```xml <rmi:registry id="registry" port="1099" /> <rmi:service id=...
<property name="serviceUrl" value="rmi://localhost:1099/MyRemoteService"/> ``` 2. **使用RMI客户端**:在代码中,可以直接注入`myRemoteServiceProxy`并调用其方法,就像调用本地对象一样。 ```java @...
spring 与rmi 的整合 1.首先编写接口 interface : 这里的接口要继承Remote, 它是一个标识接口 2.编写实现类 3.编写main方法用于启动 service 4 配置spring文件 编写客户端测试类
3. **Spring配置**:在Spring配置文件中,你需要声明一个`RmiServiceExporter`,它会暴露你的服务实现为RMI服务。你可以通过指定`serviceInterface`和`serviceImplementation`属性来关联接口和实现。 4. **客户端...
Spring RMI(Remote Method Invocation)是Java平台上的远程方法调用技术,结合Spring框架的特性,使得在分布式系统中调用远程服务变得更加便捷。在这个简单的例子中,我们将深入理解Spring RMI的工作原理以及如何...
<property name="serviceUrl" value="rmi://localhost:1099/myRemoteService"/> ``` 6. **安全性与性能优化**:在实际应用中,我们还需要考虑RMI的安全性和性能。例如,使用SSL加密通信、设置连接池来复用RMI...
3. **配置Spring容器**:在Spring的XML配置文件中,你需要声明一个`<bean>`来表示远程服务,使用`<rmi:export>`或`<bean class="org.springframework.remoting.rmi.RmiServiceExporter">`标签将服务导出为RMI。...
服务器端工程包含RMI服务的实现和配置,而客户端工程则展示了如何通过Spring的RMI代理访问这些服务。通过分析和运行这两个示例,开发者可以深入理解Spring框架与RMI的整合,以及如何在实际项目中应用这一技术。 ...