cognos提供 SDK,让 开发者通过程序调用cognos上的一些实现,任何调用,首先是从程序登录cognos开始,下面是一个具体的例子,同时 解决在weblogic上代码调用报异常的问题(登录cognos只使用了一个jar包 文件---axisCrnpClient.jar)。具体代码示例如下:

package com.resoft.navigate.util;
//Cognos Sdk调用包
//axisCrnpClient.jar

import javax.xml.rpc.ServiceException;
import org.apache.axis.AxisFault;
import org.apache.axis.client.Stub;
import com.cognos.developer.schemas.bibus._3.*;
public class CognosLoginTest{
private ContentManagerService_Port cmService = null;
private ReportService_Port reportService = null;
// connect to Cognos8 services
public void connectToReportServer(String endPoint){
try{
ContentManagerService_ServiceLocator cmServiceLocator = new ContentManagerService_ServiceLocator();
ReportService_ServiceLocator rsServiceLocator = new ReportService_ServiceLocator();
cmService = cmServiceLocator.getcontentManagerService(new java.net.URL(endPoint));
reportService = rsServiceLocator.getreportService(new java.net.URL(endPoint));
}catch (ServiceException ex){
System.out.println("Caught a ServiceException: " + ex.getMessage());
ex.printStackTrace();
}catch (Exception ex){
System.out.println("Cognos 8 server URL was: " + endPoint);
}
}
// logon to Cognos 8
public String quickLogon(String namespace, String uid, String pwd){
StringBuffer credentialXML = new StringBuffer();
credentialXML.append("<credential>");
credentialXML.append("<namespace>").append(namespace).append("</namespace>");
credentialXML.append("<username>").append(uid).append("</username>");
credentialXML.append("<password>").append(pwd).append("</password>");
credentialXML.append("</credential>");
String encodedCredentials = credentialXML.toString();
XmlEncodedXML xmlCredentials = new XmlEncodedXML();
xmlCredentials.setValue(encodedCredentials);
try{
cmService.logon(xmlCredentials, null);
BiBusHeader CMbibus = (BiBusHeader) ((Stub) cmService).getHeaderObject("", "biBusHeader");
((Stub) reportService).setHeader("", "biBusHeader", CMbibus);
System.out.println("login  0k");
}catch (Exception e){
e.printStackTrace();
}
System.out.println("Logon successful as " + uid);
return ("Logon successful as " + uid);
}
public static void main(String[] args){
String namespaceID = "dbAuth";
String userID = "dssadmin";
String password = "123";
String endPoint = "http://10.0.3.199:81/cognos8/cgi-bin/cognos.cgi";
CognosLoginTest gc = new CognosLoginTest();
gc.connectToReportServer(endPoint);
gc.quickLogon(namespaceID, userID, password);
System.out.println("OK");
}
}

上面的代码在tommcat/websphere都没问题,但是在一客户使用weblogic却发现问题,在执行   cmService.logon(xmlCredentials, null);代码时就抛出异常,查阅相关资料发现,weblogic在解释XML格式时有自己的方法,原因如下:
1、weblogic8自带的xml解析器不能解析GBK编码的,如果要让weblogic能够解析GBK编码,那么需要为weblogic8配置额外的xml解析器;
2、 一般使用apache的xml解析器,也就是Xerces.jar和Xalan.jar;

需要在操作系统的当前用户下设定classpath指定上面的xml解析器, 在weblogic的控制台执行如下操作解决:
1、在控制台的导航树中找到Services->XML这一节点,点击该节点创建一个XML Registries,主要是填写一些类的全名,这些类在上面的xml解析器中,即上面的jar包中,配置如下
Document Builder Factory:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
SAX Parser Factory:org.apache.xerces.jaxp.SAXParserFactoryImpl
Transformer Factory:org.apache.xalan.processor.TransformerFactoryImpl
2、点击apply
3、如果在myeclipse中启动weblogic8,那么还需要做如下配置,启动后的weblogic8才能支持GBK,进入到window->preferences->MyEclipse->Application Server->weblogic8->paths将Xerces.jar和Xalan.jar的路径加入到prepend to classpath中

Cognos 集成jar

以下jar包的api:
axis.jar 
axisCrnpClient.jar 
axisCognosClient.jar 
commons-discovery.jar 
commons-logging.jar 
jaxrpc.jar 
saaj.jar 
wsdl4j.jar
xercesImpl.jar 
xml-apis.jar
dom4j.jar
xalan.jar

CognosSDK Java登陆到Cognos相关推荐

  1. java 登陆验证失败_使用Java 8流进行快速失败的验证

    java 登陆验证失败 我已经失去了看过使用快速失败验证代码状态的代码的次数,方法如下: public class PersonValidator {public boolean validate(P ...

  2. java登陆界面连接数据库_java 登陆界面怎么写,连接数据库后

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 界面是 package 界面类; import javax.jws.soap.SOAPBinding.Use; import javax.swing.JB ...

  3. jsp java 登陆_jsp+java servlet实现简单用户登录

    jsp+java servlet实现简单用户登录(使用数据库,包括注册页面) 功能介绍 本项目通过使用jsp和servlet实现简单的用户登录.主要逻辑为:如果用户不存在,则首先进行注册(注册信息同步 ...

  4. Java登陆页面经常出现的问题,问一下关于登陆页面的有关问题

    问一下关于登陆页面的问题 今天照着参考书做一个jsp登陆页面的练习,页面成功显示,但是我点击按钮不会登陆 代码我是照着书打上去的  大家帮我看一下吧 login.jsp 登陆 登陆名: alt=会员名 ...

  5. java登陆拦截器_登陆拦截器LoginInterceptor

    [java]代码库package com.liang.bike.interceptor; import com.liang.bike.bean.base.UserBase; import org.ap ...

  6. java登陆界面背景_Java登录界面的实现(注册、登录、背景图片)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.java * 作者:常轩 * 微信公众号:Worldh ...

  7. Java登陆3GQQ以及获取好友信息与好友聊天的简单实现

    2019独角兽企业重金招聘Python工程师标准>>> 主要是通过java实现3GQQ的登陆,抓取好友信息(昵称,QQ号等等),以及获取聊天信息等等. 代码的灵感来自 @水之子哈哈 ...

  8. java登陆界面中关于JDBC的一个问题

    最近用java写了一个登陆的小界面,先把代码贴出来然后说说其中的问题. import java.awt.Container; import java.awt.Toolkit; import java. ...

  9. java ---- 登陆加密

    登陆的时候对密码进行加密,然后在后台进行解密 进入页面先会通过一个ajax请求,获取一个随机数key,然后通过密码和随机数进行加密, 然而感觉这种加密方法并没有什么卵用,,,只不过增加了点难度而已 & ...

最新文章

  1. excel修改列名_听说你还在手动合并Excel,看看这个吧!?
  2. linux 下升级apache,CentOS6.5在已有低版本环境下安装升级Apache+MySQL+PHP,centos6.5apache...
  3. 当年,学姐总结奇安信18k常问面试题
  4. CompletableFuture详解~applyToEither
  5. python的array从0开始吗_为什么数组是从0开始的
  6. 微信小程序 drawImage 问题
  7. DB2数据库迁移,数据库导入导出
  8. 析论易语言软件加密技术(创世纪篇)
  9. 【Call Me Maybe】MMD镜头+动作打包下载.zip
  10. C、C++中的单引号和双引号
  11. Java 随笔 IO
  12. [TYVJ3097/3121/3369] 战略游戏
  13. python requests 由于目标计算机积极拒绝,无法连接
  14. uc缓存分段视频合并
  15. 苹果手机停用连接itunes_苹果手机密码输入次数过多停用怎么办?
  16. npm出现UNMET DEPENDENCY的一种情况
  17. cad怎么设置线的粗细_AUTOCAD中如何设置线宽
  18. Linux小白的大师之路
  19. 读书笔记 | 《推荐系统》
  20. 解决小程序Input框输入文字后触摸并滚动屏幕不松开,input内文字一起滚动问题

热门文章

  1. 【面试攻略】服务端面试-边锋
  2. Android蓝牙协议介绍
  3. 软件设计模式-门面设计模式
  4. 10月15python
  5. 12.关于uniapp小程序设置页面背景色无效的问题及解决方案
  6. linux和数据库day01随堂笔记
  7. Facebook新财报:不惧“隐私门“事件影响,广告业务依然增长强劲
  8. Qmail 日志文件格式
  9. 五节课从零起步(无需数学和Python基础)编码实现AI人工智能框架电子书V1
  10. SAR ADC系列16:CDAC上机实践+作业