java登录cognos(tommcat/weblogic/websphere)

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("");
  credentialXML.append("").append(namespace).append("");
  credentialXML.append("").append(uid).append("");
  credentialXML.append("").append(pwd).append("");
  credentialXML.append("
");
  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中。
参与11

10同行回答

cutftpcutftpBI主管江西赛维LDK太阳能科技技术有限公司
谢谢楼主分享,Cognos提供的登录界面不是很好看的显示全部
谢谢楼主分享,Cognos提供的登录界面不是很好看的收起
能源采矿 · 2012-03-07
浏览848
mzfeng168mzfeng168工程师三元数码
谢谢 学习了显示全部
谢谢 学习了收起
IT分销/经销 · 2012-03-07
浏览827
daiikakudaiikakuBI开发工程师中国
CMbibus 总是null,求解显示全部
CMbibus 总是null,求解收起
政府机关 · 2011-12-01
浏览830
cognos2010cognos2010系统分析师IBM
好资料,谢谢楼主分享!显示全部
好资料,谢谢楼主分享!收起
银行 · 2011-09-15
浏览844
ggyi2003ggyi2003BI开发工程师上海熙夌信息有限公司
:lol:lol:lol显示全部
:lol:lol:lol收起
IT分销/经销 · 2011-09-14
浏览896
qq332963127qq332963127软件开发工程师esadf
:lol:lol:lol显示全部
:lol:lol:lol收起
IT分销/经销 · 2011-08-03
浏览799
aqiang_007aqiang_007软件开发工程师longtop
在.profile中把这个类XercesIml.jar写到classpath中,就OK了显示全部
在.profile中把这个类XercesIml.jar写到classpath中,就OK了收起
互联网服务 · 2011-08-03
浏览840
aqiang_007aqiang_007软件开发工程师longtop
我的环境是linux64 ,jdk1.6 , cognos10 ,weblogic server 11g,部署到weblogic上,后台报着个错误,楼主的解决办法也添加了,还是这样,不知为什么显示全部
我的环境是linux64 ,jdk1.6 , cognos10 ,weblogic server 11g,部署到weblogic上,后台报着个错误,楼主的解决办法也添加了,还是这样,不知为什么收起
互联网服务 · 2011-08-02
浏览856
aqiang_007aqiang_007软件开发工程师longtop
谢谢楼主分享显示全部
谢谢楼主分享收起
互联网服务 · 2011-07-07
浏览814
脚踏飞燕脚踏飞燕项目经理东虹桥金融在线(www.dhqjr.com)
好资料,谢谢楼主分享!显示全部
好资料,谢谢楼主分享!收起
融资租赁 · 2011-06-24
浏览812

提问者

sealink
技术总监sealink.com
擅长领域: 商业智能大数据cognos

相关问题

相关资料

问题状态

  • 发布时间:2011-06-11
  • 关注会员:1 人
  • 问题浏览:5851
  • 最近回答:2012-03-07
  • X社区推广