用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)

...全文
717 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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设置为一天试试。
Visual Studio Code 是由微软开发的一款免费、开源、跨平台的现代化轻量级代码编辑器,自发布以来迅速成为全球开发者最受欢迎的工具之一。它结合了编辑器的轻便性和集成开发环境(IDE)的强大功能,支持多种编程语言和开发场景,核心特点: 1. 跨平台支持 可在 Windows、macOS 和 Linux 上运行,保持一致的用户体验。 2. 轻量级与高性能 启动速度快,占用资源少,适合处理大型项目或低配置设备。 3. 智能代码补全 内置 IntelliSense(智能感知),提供代码提示、参数信息、快速修复等功能,支持 JavaScript、TypeScript、Python、C++ 等主流语言。 4. 内置终端 直接在编辑器内打开集成终端(支持 PowerShell、CMD、Bash 等),方便执行命令行操作。 5. 调试工具 内置调试器,支持断点、变量监视、调用堆栈查看等,无需离开编辑器即可调试代码。 6. Git 集成 直接通过侧边栏管理 Git 仓库,支持提交、分支切换、冲突解决等操作。 7. 丰富的扩展生态系统 通过 Extensions Marketplace 可安装数千款插件,扩展功能包括: 语言支持:如 Java、Go、Rust 等。 主题与图标:自定义界面风格。 工具集成:如 Docker、Kubernetes、数据库连接等。 效率工具:如 REST Client、Live Server 等。 8. 自定义与主题 支持修改键盘快捷键、界面主题、文件图标等,打造个性化开发环境。 9. 多光标编辑 按住 Alt(Windows/Linux)或 Option(macOS)点击可添加多个光标,同时编辑多处代码。 10. 远程开发支持 通过 Remote - SSH、Remote - Containers 等扩展,可直接连接远程服务器或开发容器,实现无缝协作。

81,122

社区成员

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

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