`
emparadise329
  • 浏览: 2833 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

spring发布RMI服务,多网卡问题

阅读更多

服务器有两个网卡,一个内网,一个外网

Spring xml配置如下:

	<context:property-placeholder location="classpath:/config/app.properties" />
	<!-- 客户端RMI服务 -->
	<bean id="appPush" class="cn.com.sinosoft.ebusiness.messagePush.service.server.support.RMIServiceImpl"/>
	<bean id="appPushMsg2Client" class="org.springframework.remoting.rmi.RmiServiceExporter">
		<property name="service" ref="appPush" />
		<!-- 定义服务名 -->
		<property name="serviceName" value="appPushMsg2Client" />
		<property name="serviceInterface" value="cn.com.sinosoft.ebusiness.messagePush.service.server.RMIService" />
		<property name="registryPort" value="${ServicePort}" />
		<property name="registryHost" value="${ServiceRegistryIp}" />
	</bean>

 在app.properties强制spring发布rmi服务注册IP为内网的IP(10.120.20.197),结果发布的时候出现下面异常:

2014-04-11 16:50:05  INFO ClassPathXmlApplicationContext:456  Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6aaea944: startup date [Fri Apr 11 16:50:05 CST 2014]; root of context hierarchy
2014-04-11 16:50:05  INFO XmlBeanDefinitionReader:315  Loading XML bean definitions from class path resource [config/spring/applicationContext-messagePush.xml]
2014-04-11 16:50:06  INFO PropertyPlaceholderConfigurer:177  Loading properties file from class path resource [config/app.properties]
2014-04-11 16:50:06  INFO DefaultListableBeanFactory:555  Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@44b89233: defining beans [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,org.springframework.aop.config.internalAutoProxyCreator,appPush,appPushMsg2Client]; root of factory hierarchy
2014-04-11 16:50:06  INFO RmiServiceExporter:328  Looking for RMI registry at port '1099' of host [10.120.20.197]
2014-04-11 16:50:07  INFO DefaultListableBeanFactory:422  Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@44b89233: defining beans [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,org.springframework.aop.config.internalAutoProxyCreator,appPush,appPushMsg2Client]; root of factory hierarchy
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appPushMsg2Client' defined in class path resource [config/spring/applicationContext-messagePush.xml]: Invocation of init method failed; nested exception is java.rmi.ConnectException: Connection refused to host: 10.120.20.197; nested exception is: 
	java.net.ConnectException: Connection refused: connect
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at cn.com.sinosoft.ebusiness.messagePush.App.main(App.java:20)
Caused by: java.rmi.ConnectException: Connection refused to host: 10.120.20.197; nested exception is: 
	java.net.ConnectException: Connection refused: connect
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
	at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
	at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
	at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:341)
	at sun.rmi.registry.RegistryImpl_Stub.list(Unknown Source)
	at org.springframework.remoting.rmi.RmiServiceExporter.testRegistry(RmiServiceExporter.java:420)
	at org.springframework.remoting.rmi.RmiServiceExporter.getRegistry(RmiServiceExporter.java:331)
	at org.springframework.remoting.rmi.RmiServiceExporter.prepare(RmiServiceExporter.java:268)
	at org.springframework.remoting.rmi.RmiServiceExporter.afterPropertiesSet(RmiServiceExporter.java:229)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
	... 12 more
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:579)
	at java.net.Socket.connect(Socket.java:528)
	at java.net.Socket.<init>(Socket.java:425)
	at java.net.Socket.<init>(Socket.java:208)
	at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
	at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:147)
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
	... 22 more

如果注释掉这一行

<property name="registryHost" value="${ServiceRegistryIp}" />

 发布的时候从日志上看是外网的IP,现在发布服务的时候要强制绑定到内网的IP上。求解决方法,谢谢!

分享到:
评论

相关推荐

    spring RMI 服务(自动把service发布为RMI服务)

    在Spring框架的支持下,我们可以更方便地将服务发布为RMI服务,使得其他应用程序可以跨JVM(Java Virtual Machine)访问这些服务。下面将详细阐述Spring RMI服务的实现原理、配置过程以及如何自动化发布服务。 首先...

    spring和RMI分布式整合源码

    通过Spring的Bean工厂,我们可以将RMI服务声明为Spring Bean,这样就可以利用Spring的依赖注入来配置和服务。此外,Spring AOP可以用于在远程方法调用前后添加拦截逻辑,如日志记录、性能监控等。 具体到这个压缩包...

    Spring RMI

    - **负载均衡**:通过RMI注册表,可以将请求分发到多个服务实例,提高系统可用性。 ### 6. Spring Boot与RMI Spring Boot简化了Spring应用程序的启动和配置,包括RMI服务。在Spring Boot应用中,可以通过配置文件...

    Spring-RMI.rar_spring rmi

    2.4 启动RMI服务器:运行包含上述配置的Spring上下文,服务将自动发布到RMI注册表。 三、创建Spring RMIClient 3.1 引入远程服务:在客户端项目中,同样需要定义远程接口,并确保客户端可以访问服务器端的接口。 ...

    SpringRMI小例子

    Spring提供了对RMI的高级抽象,通过其`org.springframework.remoting.rmi`包,使得RMI服务的创建、配置和暴露变得更加简单。在Spring MVC项目中,我们可以将RMI服务作为一个Bean来管理,这样可以充分利用Spring的...

    spring+rmi非本地实现

    - **负载均衡**:在大型分布式系统中,可能有多台服务器提供RMI服务。Spring可以配合负载均衡工具(如Apache HttpClient或Netflix Ribbon)来决定请求应发送到哪个服务器。 4. **挑战与最佳实践**: - **性能优化...

    Spring RMI小例子

    - **`&lt;bean&gt;`标签中的`rmi:`命名空间**:Spring配置文件中可以使用`&lt;rmi:registry&gt;`来定义RMI注册表,`&lt;rmi:export&gt;`用于导出远程服务。 - **`RmiServiceExporter`**:Spring提供的bean,负责将Spring Bean暴露为...

    rmi与spring整合实例

    - 在`rmi_spring_server`项目中,包含了服务器端的代码,实现了RMI服务的发布。 - 在`rmi_spring_client`项目中,包含了客户端的代码,实现了对服务器端RMI服务的调用。 通过上述整合,我们可以构建一个健壮的...

    spring与rmi 整合实例 源码详解

    spring 与rmi 的整合 1.首先编写接口 interface : 这里的接口要继承Remote, 它是一个标识接口 2.编写实现类 3.编写main方法用于启动 service 4 配置spring文件 编写客户端测试类

    spring rmi 小例子

    在本示例中,我们将探讨如何使用Spring RMI创建一个小的应用程序,这通常涉及到服务器端(服务提供者)和客户端(服务消费者)的设置。 首先,让我们了解Spring RMI的核心概念: 1. **接口定义**:在RMI中,我们...

    Spring-RMI (RMI调用, HTTP调用)

    3. **Spring配置**:在Spring配置文件中,你需要声明一个`RmiServiceExporter`,它会暴露你的服务实现为RMI服务。你可以通过指定`serviceInterface`和`serviceImplementation`属性来关联接口和实现。 4. **客户端...

    spring rmi 集成

    5. **Spring配置**:在Spring的配置文件中,可以使用`&lt;bean&gt;`标签定义RMI服务,并使用`&lt;lookup-method&gt;`标签来查找并注入远程对象。 ```xml &lt;bean id="myServiceExporter" class="org.springframework.remoting...

    java Spring+RMI入门程序源代码

    2. **Spring RMI 服务器**:Spring 支持通过 `RmiServiceExporter` 将 Spring 管理的bean导出为 RMI 服务。只需将这个类添加到 Spring 配置中,指定要导出的 bean 和接口即可。 3. **事务管理**:Spring 的 AOP ...

    spring rmi 改造

    在IT行业中,Spring框架是Java开发中的一个基石,它提供了丰富的功能来简化应用程序的构建,包括远程过程调用(Remote Method Invocation,RMI)服务。本文将深入探讨"spring rmi 改造"这一主题,主要关注如何在原有...

    spring rmi应用

    Spring RMI整合了RMI机制,提供了一种更加灵活和易于管理的方式,让开发者可以在Spring容器中定义远程服务,并通过Spring的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)特性来增强这些服务。...

    spring RMI简单例子

    Spring RMI(Remote Method Invocation)是Java平台上的远程方法调用技术,结合Spring框架的特性,使得在分布式系统中调用远程服务变得更加便捷。在这个简单的例子中,我们将深入理解Spring RMI的工作原理以及如何...

    java spring+rmi 的远程调用例子

    Java Spring与RMI(Remote Method Invocation)的整合是企业级应用中常见的远程服务交互方式。Spring框架提供了对RMI的支持,使得开发者能够方便地在分布式环境中进行服务的调用。这个压缩包文件“Spring+RMI”很...

    spring RMI 实用分享

    3. **配置RMIServer**:在Spring配置文件中,使用`RmiRegistryFactoryBean`创建RMI注册表,并使用`RmiServiceExporter`导出远程服务。 ```xml &lt;bean id="registry" class="org.springframework.remoting.rmi....

    spring中使用RMI

    RMI的一个重要优势是它可以在多个应用之间共享服务,提高了代码的重用性。然而,RMI也存在一些限制,如性能可能受到网络延迟的影响,且不支持跨语言调用。随着现代技术的发展,如HTTP/RESTful API、gRPC等,RMI的...

    如何在Spring框架中使用RMI技术.zip

    服务器端工程包含RMI服务的实现和配置,而客户端工程则展示了如何通过Spring的RMI代理访问这些服务。通过分析和运行这两个示例,开发者可以深入理解Spring框架与RMI的整合,以及如何在实际项目中应用这一技术。 ...

Global site tag (gtag.js) - Google Analytics