开启安全模式后,偶尔报RMIException异常,处理方法

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

开启安全模式后,偶尔报RMIException异常,处理方法

这个问题常见于集群环境开启了安全模式,偶尔报com.kingdee.bos.orm.rmi.RMIException异常,这个异常是安全模式检验失败,偶发成功可能是调用方代码只是传了sessionid,没有设置call.setMaintainSession(true);

需要按https://wenku.my7c.com/article/43437547377459342中的方法调用
即下面的方法

在webservice客户端调用处设置call.setMaintainSession(true); 保证axis自动携带cookie到服务端

     注意,调用业务方法的时候使用登录接口时的同个call实例,不要新建。
例如:


//调用登陆接口

Service s=new Service();

Call call=(Call)s.createCall();

call.setOperationName("login");

call.setTargetEndpointAddress("http://localhost:8080/ormrpc/services/EASLogin?wsdl");

call.setReturnType(new QName("urn:client","WSContext"));

call.setReturnClass(WSContext.class);

call.setReturnQName(new QName("","loginReturn"));

//超时

call.setTimeout(Integer.valueOf(1000*600000*60));

call.setMaintainSession(true);

//登陆接口参数

WSContext rs=(WSContext)call.invoke(new Object[]{"am", "", "eas", "bos80demo", "l2", Integer.valueOf(0)});

if(rs. getSessionId() == null){

        throw new Exception(“login fail”);

}

System.out.println(rs.getSessionId());

//清理

call.clearOperation();

//调用业务接口

call.setOperationName("addwuliao");

call.setTargetEndpointAddress("http://localhost:8080/ormrpc/services/WStettreeFacade");

//call.setReturnType(new QName("urn:lang.java","String"));

//call.setReturnClass(String.class);

call.setReturnQName(new QName("","addwuliaoReturn"));

call.setTimeout(Integer.valueOf(1000*600000*60));

call.setMaintainSession(true);

//设置登录返回的session在soap头 "http://login.webservice.bos.kingdee.com"是固定的

SOAPHeaderElement header=new SOAPHeaderElement("http://login.webservice.bos.kingdee.com","SessionId", rs.getSessionId());

call.addHeader(header);

//接口参数

String aa=(String)call.invoke(new Object[]{"test1", "test"} );


开启安全模式后,偶尔报RMIException异常,处理方法

这个问题常见于集群环境开启了安全模式,偶尔报com.kingdee.bos.orm.rmi.RMIException异常,这个异常是安全模式检验失败,偶发成功可能是调...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息