2 zsx0321 zsx0321 于 2015.06.17 00:53 提问

spring4.03 rmi apache james2.3报错 20C

用jconsole调用
service:jmx:rmi://131.124.95.113:10202/jndi/rmi://131.124.95.113:10201/jmxrmi
可以直接连接上并且调用方法
图片说明
图片说明
但是用spring client调用就不行
下面是我的配置:

 <bean id="mainJAMESServerManagement" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
        <property name="serviceUrl">
                <value>service:jmx:rmi://131.124.95.113:10202/jndi/rmi://131.124.95.113:10201/jmxrmi</value>
        </property>
        <property name="serviceInterface">
                <value>com.test.remote.MainJAMESServerManagement</value>
        </property>
</bean>

初始化bean就报错为:
java.net.MalformedURLException: not a hierarchical URL: service:jmx:rmi://131.124.95.113:10202/jndi/rmi://131.124.95.113:10201/jmxrmi
at java.rmi.Naming.intParseURL(Naming.java:258)
at java.rmi.Naming.parseURL(Naming.java:220)
at java.rmi.Naming.lookup(Naming.java:79)
at org.springframework.remoting.rmi.RmiClientInterceptor.lookupStub(RmiClientInterceptor.java:200)
at org.springframework.remoting.rmi.RmiClientInterceptor.prepare(RmiClientInterceptor.java:147)
at org.springframework.remoting.rmi.RmiClientInterceptor.afterPropertiesSet(RmiClientInterceptor.java:135)
at org.springframework.remoting.rmi.RmiProxyFactoryBean.afterPropertiesSet(RmiProxyFactoryBean.java:68)

这句的意思貌似为url格式不正确,我改为
rmi://131.124.95.113:10201/jmxrmi
这回初始化不报错,调用的时候报错

 <bean id="mainJAMESServerManagement" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
        <property name="serviceUrl">
                <value>rmi://131.124.95.113:10201/jmxrmi</value>
        </property>
        <property name="serviceInterface">
                <value>com.test.remote.MainJAMESServerManagement</value>
        </property>
</bean>

报错为:
java.lang.NoSuchMethodException: javax.management.remote.rmi.RMIServerImpl_Stub.addUser(java.lang.String, java.lang.String)
at java.lang.Class.getMethod(Class.java:1605)
at org.springframework.remoting.rmi.RmiClientInterceptorUtils.invokeRemoteMethod(RmiClientInterceptorUtils.java:75)
at org.springframework.remoting.rmi.RmiClientInterceptor.doInvoke(RmiClientInterceptor.java:364)
at org.springframework.remoting.rmi.RmiClientInterceptor.invoke(RmiClientInterceptor.java:260)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
提示没有这个方法,但是远程抽象接口里面真的有这个方法,如上图。求高手解答

2个回答

u012006909
u012006909   2015.06.17 16:54

看一下你这个类MainJAMESServerManagement

zsx0321
zsx0321 发下面了
大约 3 年之前 回复
zsx0321
zsx0321   2015.06.18 21:46
 public interface MainJAMESServerManagement{

    boolean addUser(String userName, String password);
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
apache james-2.3.2整合mysql5
默认情况下james-2.3.2的数据存储在C:/james-2.3.2/apps/james/var中,使用起来可能相当的不便。不过james-2.3.2提供了多种用户信息存储方案,如数据库存储,LDAP存储等。 下面我们以存储到mysql为例: 默认下用户信息保存到C:/james-2.3.2/apps/james/var/users,通过修改配置文件/apps/james/SAR
apache james-2.3.2邮件服务器的安装
james-2.3.2是apache下的开源项目,是一款优秀的邮件服务器, 下载地址:http://james.apache.org/download.cgi 首先确保你的机器已安装jdk并配置了JAVA_HOME,具体配置请查百度、google。 1、解压apache-james-2.3.2.zip到你的c盘,如:c:/james-2.3.2 2、进入C:/james-2
JAVA RMI 反序列化远程命令执行漏洞
JAVA RMI 反序列化远程命令执行漏洞 漏洞资料 背景 原理 Payload构造 搭建本地测试环境 开启包含第三方库的RMI服务 测试RMI客户端 攻击测试 升级版攻击 Weblogic Commons-Collections反序列化RCE漏洞CVE-2015-4852JAVA RMI 反序列化远程命令执行漏洞漏洞资料Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-324
james-2.3.2配置文件
<br /><br /> 环境:Windows2003, 机器名: 9-125-70-186<br /> 因为机器在lab里,没有直接对应的DNS服务器。 我就另外添加两个,处于同一内部网的DNS服务器。这就是为什么DNSServer block里有三个Server的原因。<br /> (1) JDK另外解决方法:<br /><br /> 在: 不必修改Windows环境变量,直接在run.bat文件中,修改为如下:<br /> rem<br /> rem Determine if JAVA_H
java rmi stub 反编译以后, 动态代理
源文件: /**  *  * User: xingxiaobing  * Date: 2015-02-13  * 远程的接口的实现  */  public class HelloImpl extends UnicastRemoteObject implements IHello {      /**       * 因为UnicastRemoteObject的构造方法抛出了Rem
20160509-有一次整理下Java apache commons那个反序列化漏洞的原理
UI.class->GetShellWL.Connect(Host, Port); 就是反序列化的类 创建我们的远程类,在类中实现两个方法,执行系统命令获取回显和上传文本文件,该类必须继承java.rmi.Remote接口,代码如下: 接口: public interface InitApp extends java.rmi.Remote {       String runCm
java远程调用(rmi)常见的两个错误
java的 rmi远程调用给分布式编程带来极大的方便,在使用rmi过程中eclipse开发平台会提示一些错误,可能是因为遗漏了需要注意的地方。
关于RMI远程调用失败的问题
最近在做一个项目,要用到RMI远程调用,在连接远程RMI接口的时候报如下错误,不知道是何原因,具体报错如下:INFO - 开始远程连接诱导系统RMI......java.rmi.ConnectException: Connection refused to host: 192.168.14.102; nested exception is:     java.net.ConnectExceptio
远程RMI调用接口时传JSON类型参数失败的解决办法
一般情况下,远程调用接口时传的参数类型必须是经过序列化之后的类, 因为数据要在网络间传输,需要进行序列化,所以一般需要在接口间传递的对象都要实现Serializable接口,一些常用的String,int,long这些数据类型基本上都没有问题,不过在传json字符串的时候有时候就会报下面这个错误: java.io.NotSerializableException: net.sf.json.JSO
java中RMI报错no security manager: RMI classloader disable
前段时间在学习EJB有关的东西( EJB到底是什么,真的那么神秘吗??) 知道EJB都是建立在rmi基础之上的,在网上找到了几篇介绍rmi的, Java RMI之HelloWorld篇 对照上面的文章在本机的eclipse中复制了几个java文件, 测试完全通过. 之后决定尝试下将服务端server放在自己的阿里云主机上,将client放在自己的电脑上, 将eclipse对应目录下