用Servlet写了个BO单点登录 但是死在了IEnterpriseSession enterpriseSession获取参数的地方 求解!!!!!

张远_ 2018-04-11 04:32:36



import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.crystaldecisions.sdk.framework.CrystalEnterprise;
import com.crystaldecisions.sdk.framework.IEnterpriseSession;
import com.crystaldecisions.sdk.framework.ISessionMgr;
import com.crystaldecisions.sdk.occa.security.ILogonTokenMgr;

public class Bo extends HttpServlet {
/**
* 登录BO系统
*
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
out.println("session====="+session);
System.out.println("session====="+session);
out.println("Init=====");
try {
String cms = "********:6400";
String username = request.getParameter("uid");
String password = request.getParameter("pwd");
String reportID = request.getParameter("rid");
String auth = "secEnterprise";
if(username==null||password==null||reportID==null){
return;
}
out.println("username======="+username);

out.println("password======="+password);

out.println("reportID======="+reportID);
ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr();
IEnterpriseSession enterpriseSession = sessionMgr.logon(username, password, cms, auth);
out.println("LoginOK=======");
ILogonTokenMgr token = enterpriseSession.getLogonTokenMgr();
String URLrequest = "http://**********:8080/BOE/OpenDocument/opendoc/openDocument.jsp?sWindow=Same&isApplication=true&iDocID="+reportID+"token="+token;
response.sendRedirect(URLrequest);
out.println("ObtainOK=======");
} catch (Exception e) {
response.getWriter().write(e.getMessage());
StackTraceElement[] stackTrace = e.getStackTrace();
for (StackTraceElement stackTraceElement : stackTrace) {
response.getWriter().write(stackTraceElement.toString() + "\r\n");
}
}
}
}

IEnterpriseSession enterpriseSession = sessionMgr.logon(username, password, cms, auth);这句话有了问题,搞不定了
下面是完全的报错日志(问号我也不懂是哪里打出的):
session=====org.apache.catalina.session.StandardSessionFacade@29a7789c
Init=====
username=======hanabi
password=======1234Abcd
reportID=======333
?????
com.crystaldecisions.sdk.exception.SDKServerException.map(SDKServerException.java:99)
com.crystaldecisions.sdk.exception.SDKException.map(SDKException.java:124)
com.crystaldecisions.sdk.occa.security.internal.ConfidentialChannelService.createConfidentialChannel(ConfidentialChannelService.java:150)
com.crystaldecisions.sdk.occa.security.internal.CCMap.locateCCItem(CCMap.java:63)
com.crystaldecisions.sdk.occa.security.internal.LogonService.doUserLogon(LogonService.java:855)
com.crystaldecisions.sdk.occa.security.internal.LogonService.doUserLogon(LogonService.java:815)
com.crystaldecisions.sdk.occa.security.internal.LogonService.userLogon(LogonService.java:211)
com.crystaldecisions.sdk.occa.security.internal.SecurityMgr.userLogon(SecurityMgr.java:177)
com.crystaldecisions.sdk.framework.internal.SessionMgr.logon_aroundBody0(SessionMgr.java:454)
com.crystaldecisions.sdk.framework.internal.SessionMgr.logon_aroundBody1$advice(SessionMgr.java:512)
com.crystaldecisions.sdk.framework.internal.SessionMgr.logon(SessionMgr.java:1)
test.Bo.doGet(Bo.java:44)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:617)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:876)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:618)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1790)
java.lang.Thread.run(Thread.java:619)

...全文
704 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
张远_ 2018-04-11
  • 打赏
  • 举报
回复
引用 1 楼 mj280824108 的回复:
首先确认下ping地址看能不能通,排除网络问题,然后再单独登录一下。最后token的是有有效期的,看看是不是这个问题。把token设置为一天试试。
很无奈
张远_ 2018-04-11
  • 打赏
  • 举报
回复
ping过的 是可用的 这段代码的意思就是 在网页上调用这个代码 通过在地址栏填写参数重定向到一个新的页面 现在的问题是调用这段代码的时候 在入参的地方出现了问题 但是以前项目组有写通的(BO单点登录) 但是是在一个挂在了一个系统下面 我把他们以前写的扣出来 单独运行 也是这种问题。 所以我就没有办法 现在 1 要么这代码是错的 2服务器没有配置好 3我用的jar包扣的是以前的那个系统上的 单列出来就错了 他们改了 jar包 所以 我现在困难的是 不知道是哪一方面的错 为什么在登录的时候就错了 如果错按照逻辑来讲 也应该是重定向 因为这些方法全是调用的源码 谢谢参考
Enchanter, 2018-04-11
  • 打赏
  • 举报
回复
首先确认下ping地址看能不能通,排除网络问题,然后再单独登录一下。最后token的是有有效期的,看看是不是这个问题。把token设置为一天试试。

81,094

社区成员

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

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