com.caucho.hessian.io.HessianServiceException: The service has no method named

BUG胡汉三
博客专家认证
2012-08-14 10:01:10

2012-8-14 9:50:07 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
com.caucho.hessian.io.HessianServiceException: The service has no method named: setUser
at com.caucho.hessian.io.Hessian2Input.prepareFault(Hessian2Input.java:446)
at com.caucho.hessian.io.Hessian2Input.startReply(Hessian2Input.java:414)
at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:223)
at $Proxy72.setUser(Unknown Source)
at com.chinaboxun.infobank.core.util.sms.CustSms.smsboss(CustSms.java:87)
at org.apache.jsp.mmsmanage.listmms_jsp._jspService(listmms_jsp.java:101)


Hessian的配置木有问题、因为其它的Hessian调用也是这么配置的、没出什么问题。
以前的Hessian调用的时候、也没有问题的、
但是上次改动过该Hessian接口。
我另外一边的调用也跟着改动了一下、没想到、它就报错了。
但是这个方法真的存在啊。
为什么、它老是报找不到呢!


HESSIAN-SENDSMS=http\://172.16.0.159\:8080/module-sms/hessian/smsSendMsg
HESSIAN-generl=http\://172.16.0.159\:8080/module-sms/

上面是URL地址。
Hessian接口的实现就是放在这上面的。


String url = ReadProperties.getValue("HESSIAN-SENDSMS");
HessianProxyFactory factory = new HessianProxyFactory();
try {
ium = (ISmsGetBoss) factory.create(ISmsGetBoss.class, url );//smsSendMsg
if (ium != null) {
ium.setUser(userinfo);
ium.setServNum(munmno, "PAGE","inside");
}
} catch (MalformedURLException e) {
e.printStackTrace();
}


这个是我调用Hessian接口的代码!!!


求指点、急急急啊!!!
...全文
677 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
BUG胡汉三 2012-08-14
  • 打赏
  • 举报
回复

我的错、
调用URL的配置是有问题的!
我的方法找不到就是因为我调用错了!
因为有两个URL:

<servlet>
<servlet-name>smsSendMsg</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>service-class</param-name>
<param-value>com.chinaboxun.hessian.service.session.impl.HessianSmsSendMsg</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>smsSendMsg</servlet-name>
<url-pattern>/hessian/smsSendMsg</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>smsSendPage</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>service-class</param-name>
<!-- com.chinaboxun.sms.core.util.smsgetboss.SmsGetBoss -->
<param-value>com.chinaboxun.sms.core.util.smsgetboss.SmsGetBoss</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>smsSendPage</servlet-name>
<url-pattern>/hessian/smsSendPage</url-pattern>
</servlet-mapping>


明明smsSendPage才是ISmsGetBoss的实现
我非要调用smsSendMsg。
这里的主要原因是我太大意、也太着急了!
smsSendMsg一直在用、而smsSendPage很久没用了。
sms的接口跟实现后、才发现infobank的项目调用出错了!
于是一直在用smsSendMsg在调试、也不看配置、因为我始终以为、以前的配置都是OK的!
为什么突然就不能用了呢、肯定跟配置没关系!
这样的想当然造成的结果就是浪费了半天的时间!

----------------希望大家引以为戒吧!
修改东西的时候、要考虑清楚、那些地方要跟着改!
修改的步骤要清晰、否则、一步错步步错!
o(︶︿︶)o 唉!
brightyq 2012-08-14
  • 打赏
  • 举报
回复
楼主给出的代码貌似没有问题。如果排除编译问题,看是不是什么配置的问题。
BUG胡汉三 2012-08-14
  • 打赏
  • 举报
回复
infobank的ISmsGetBoss接口

public interface ISmsGetBoss {
public void setUser(UserSessionObject user);
public void setServNum(String MenuNo,String form,String isOutSide);

}

sms的ISmsGetBoss接口

public interface ISmsGetBoss {
public void setUser(UserSessionObject user);
public void setServNum(String MenuNo,String form,String isOutSide);

}

sms的ISmsGetBoss实现:

public class SmsGetBoss implements ISmsGetBoss{
private UserSessionObject user = null;
public void setUser(UserSessionObject user) {
this.user = user;
}
public void setServNum(String MenuNo,String form,String isOutSide){
//方法内容省略......
}
}
BUG胡汉三 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

ISmsGetBoss类里有setUser方法吗?
[/Quote]
必须有啊!!!
不然怎么调用啊!
这样吧、两个工程:infobank跟sms
infobank利用Hessian调用sms的实现方法
infobank的接口:

public interface ITestInfobankHessian {
public void TTT(String name);
}

sms的接口:

public interface ITestInfobankHessian {
public void TTT(String name);
}

sms的实现:

public class TestInfobankHessian implements ITestInfobankHessian {

public void TTT(String name) {
System.out.println("--------------------------------");
System.out.println("name:"+name);
System.out.println("--------------------------------");
}

}



一调用、就报错:

com.caucho.hessian.io.HessianServiceException: The service has no method named: TTT


突然发现、不止刚刚的接口调用不了了。
连新增的接口都不行了!
肿么回事情呢?
brightyq 2012-08-14
  • 打赏
  • 举报
回复
ISmsGetBoss类里有setUser方法吗?
BUG胡汉三 2012-08-14
  • 打赏
  • 举报
回复
靠、为什么CSDN老404啊!!!




人都在哪里、出来帮帮俺吧!!!

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧