Spring对java的rmi调用:在启动服务端测试类等待客户端连接时,客户端报错如下:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logPerson' defined in class path resource [com/bus/test/ClientAppContext.xml]: Cannot resolve reference to bean 'com.bus.test.ILogPerson' while setting bean property 'serviceInterface'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.bus.test.ILogPerson' is defined
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.bus.test.ILogPerson' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:360)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:914)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:241)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:267)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1095)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:857)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at com.bus.test.LogPersonClient.main(LogPersonClient.java:28)还请大虾们执教,多谢!服务端测试类
public class TestMain {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
}
}
客户端测试类
public class LogPersonClient {
protected static final Log log = LogFactory.getLog(LogPersonClient.class);
public static void main(String[] args) { ClassPathResource resource = new ClassPathResource( "com/bus/test/ClientAppContext.xml"); BeanFactory beanFactory = new XmlBeanFactory(resource); PersonVo personVo = new PersonVo(); personVo.setFristName("Wang"); personVo.setLastName("XiaoGuang"); ILogPerson iLogPerson = (ILogPerson) beanFactory.getBean("logPerson"); log.info(iLogPerson.getPerson(personVo)); }
}public class LogPerson implements ILogPerson {
public String getPerson(PersonVo personVo) { return personVo.getFristName() + "." + personVo.getLastName();
}
}package com.bus.test;import java.io.Serializable;
public class PersonVo implements Serializable{
private String firstName;
private String lastName;
public void setFristName(String firstName){
this.firstName = firstName;
}
public String getFristName(){
return this.firstName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
public String getLastName(){
return this.lastName;
}
}
public interface ILogPerson {
public String getPerson(PersonVo personVo);
}spring server端配置文件applicationContext1.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="logPersonService"
class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName">
<value>LogPerson</value>
</property>
<property name="service">
<ref bean="logPerson" />
</property>
<property name="serviceInterface">
<value>com.bus.test.ILogPerson</value>
</property>
<property name="registryPort">
<value>1210</value>
</property>
</bean>
<bean id="logPerson" class="com.bus.test.LogPerson"></bean>
</beans>
spring client端配置文件ClientAppContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="logPerson" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl">
<value>rmi://localhost:1210/LogPerson</value>
</property>
<property name="serviceInterface">
<ref bean="com.bus.test.ILogPerson" />
</property>
</bean>
</beans>
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logPerson' defined in class path resource [com/bus/test/ClientAppContext.xml]: Cannot resolve reference to bean 'com.bus.test.ILogPerson' while setting bean property 'serviceInterface'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.bus.test.ILogPerson' is defined
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.bus.test.ILogPerson' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:360)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:914)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:241)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:267)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1095)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:857)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at com.bus.test.LogPersonClient.main(LogPersonClient.java:28)还请大虾们执教,多谢!服务端测试类
public class TestMain {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
}
}
客户端测试类
public class LogPersonClient {
protected static final Log log = LogFactory.getLog(LogPersonClient.class);
public static void main(String[] args) { ClassPathResource resource = new ClassPathResource( "com/bus/test/ClientAppContext.xml"); BeanFactory beanFactory = new XmlBeanFactory(resource); PersonVo personVo = new PersonVo(); personVo.setFristName("Wang"); personVo.setLastName("XiaoGuang"); ILogPerson iLogPerson = (ILogPerson) beanFactory.getBean("logPerson"); log.info(iLogPerson.getPerson(personVo)); }
}public class LogPerson implements ILogPerson {
public String getPerson(PersonVo personVo) { return personVo.getFristName() + "." + personVo.getLastName();
}
}package com.bus.test;import java.io.Serializable;
public class PersonVo implements Serializable{
private String firstName;
private String lastName;
public void setFristName(String firstName){
this.firstName = firstName;
}
public String getFristName(){
return this.firstName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
public String getLastName(){
return this.lastName;
}
}
public interface ILogPerson {
public String getPerson(PersonVo personVo);
}spring server端配置文件applicationContext1.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="logPersonService"
class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName">
<value>LogPerson</value>
</property>
<property name="service">
<ref bean="logPerson" />
</property>
<property name="serviceInterface">
<value>com.bus.test.ILogPerson</value>
</property>
<property name="registryPort">
<value>1210</value>
</property>
</bean>
<bean id="logPerson" class="com.bus.test.LogPerson"></bean>
</beans>
spring client端配置文件ClientAppContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="logPerson" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl">
<value>rmi://localhost:1210/LogPerson</value>
</property>
<property name="serviceInterface">
<ref bean="com.bus.test.ILogPerson" />
</property>
</bean>
</beans>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货