Consuming OBIEE HTMLView Service(Analytics) in ADF - 12c. WORKING !!!
Step 1 : Create Web Service client for HtmlViewService and SAWSessionService .
Step 2 : Create HttpServlet .
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
StringBuffer outPutHtml = callReport(request, response);
out.println(outPutHtml);
}
private StringBuffer callReport(HttpServletRequest request, HttpServletResponse response) {
try {
String userName=JSFUtils.getStringFromBundle("OBIEE_USER_NAME");
String password=JSFUtils.getStringFromBundle("OBIEE_PASSWORD");
String host=JSFUtils.getStringFromBundle("OBIEE_HOST");
String OBIEEUrl=JSFUtils.getStringFromBundle("OBIEE_ANALYTICS_URL");
String OBIEEQname=JSFUtils.getStringFromBundle("OBIEE_ANALYTICS_QNAME");
String OBIEEContext=JSFUtils.getStringFromBundle("OBIEE_ANALYTICS_CONTEXT");
SAWSessionService sAWSessionService = new SAWSessionService(new URL(OBIEEUrl), new QName(OBIEEQname,"SAWSessionService"));
SAWSessionServiceSoap sAWSessionServiceSoap = sAWSessionService.getSAWSessionServiceSoap();
HtmlViewService htmlViewService = new HtmlViewService(new URL(OBIEEUrl), new QName(OBIEEQname,"HtmlViewService"));
HtmlViewServiceSoap htmlViewServiceSoap = htmlViewService.getHtmlViewService();
String reportPath = request.getParameter("reportLocation");
//sAWSessionServiceSoap.logon(userName, password);
SAWLocale sawlocale = new SAWLocale();
sawlocale.setLanguage(request.getLocale().getLanguage());
sawlocale.setCountry(request.getLocale().getCountry());
SAWSessionParameters sessionparams = new SAWSessionParameters();
String userAgent = request.getHeader("User-Agent");
sessionparams.setUserAgent(userAgent);
sessionparams.setLocale(sawlocale);
sessionparams.setAsyncLogon(false);
AuthResult result = sAWSessionServiceSoap.logonex(userName, password, sessionparams);
String sessionID = result.getSessionID();
List<String> li = new ArrayList<String>();
li.add(sessionID);
sAWSessionServiceSoap.keepAlive(li);
Cookie cookie = new Cookie("ORA_BIPS_NQID", sessionID);
cookie.setDomain(host);
cookie.setPath(OBIEEContext);
cookie.setComment("user is not eligible to take the survey this time");
cookie.setMaxAge(24 * 60 * 60);
response.addCookie(cookie);
//start page
StartPageParams option = new StartPageParams();
option.setIdsPrefix("fzz");
option.setDontUseHttpCookies(true);
Random r = new Random(System.currentTimeMillis());
//Report to page
String pageID = htmlViewServiceSoap.startPage(option, sessionID);
String randomValue = "fz" + (1 + r.nextInt(2)) * 10000 + r.nextInt(10000);
ReportRef ref = new ReportRef();
ref.setReportPath(reportPath);
//ref.setReportXml("");
//htmlViewServiceSoap.setBridge(request.getContextPath() + "/bridgeservlet" , sessionID);
ReportHTMLOptions htmlOptions = new ReportHTMLOptions();
htmlOptions.setEnableDelayLoading(false);
htmlViewServiceSoap.addReportToPage(pageID, randomValue, ref, null, null, htmlOptions, sessionID);
//getHeadersHtml
String outputHeader = htmlViewServiceSoap.getHeadersHtml(pageID, sessionID);
//getHtmlForReport
String outputhtml = htmlViewServiceSoap.getHtmlForReport(pageID, randomValue, sessionID);
StringBuffer output = new StringBuffer();
output.append("<HTML>");
output.append("<HEAD>");
output.append(outputHeader);
output.append("</HEAD>");
output.append("<BODY>");
output.append(outputhtml);
output.append("</BODY>");
output.append("</HTML>");
return output;
} catch (Exception ex) {
ex.printStackTrace();
StringBuffer erroutput = new StringBuffer();
return erroutput.append(ex.getMessage());
}
Step 3 : Access report using below sample url.
http://host:port/ADFOBIEEReport/faces/analyticsservlet?reportLocation=<Report Location>
Sample URL and QNAME:
OBIEE_ANALYTICS_URL=http://host:port/analytics/saw.dll/wsdl/v7
OBIEE_ANALYTICS_QNAME=urn://oracle.bi.webservices/v7
OBIEE_ANALYTICS_CONTEXT=/analytics
Note:
To display report in IFRAME follow below steps.
Setp 1 : Change below configuration in OBIEE server.
Step 2 : Add below lines in web.xml
Happy Coding !!!!!!!
Step 2 : Create HttpServlet .
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
StringBuffer outPutHtml = callReport(request, response);
out.println(outPutHtml);
}
private StringBuffer callReport(HttpServletRequest request, HttpServletResponse response) {
try {
String userName=JSFUtils.getStringFromBundle("OBIEE_USER_NAME");
String password=JSFUtils.getStringFromBundle("OBIEE_PASSWORD");
String host=JSFUtils.getStringFromBundle("OBIEE_HOST");
String OBIEEUrl=JSFUtils.getStringFromBundle("OBIEE_ANALYTICS_URL");
String OBIEEQname=JSFUtils.getStringFromBundle("OBIEE_ANALYTICS_QNAME");
String OBIEEContext=JSFUtils.getStringFromBundle("OBIEE_ANALYTICS_CONTEXT");
SAWSessionService sAWSessionService = new SAWSessionService(new URL(OBIEEUrl), new QName(OBIEEQname,"SAWSessionService"));
SAWSessionServiceSoap sAWSessionServiceSoap = sAWSessionService.getSAWSessionServiceSoap();
HtmlViewService htmlViewService = new HtmlViewService(new URL(OBIEEUrl), new QName(OBIEEQname,"HtmlViewService"));
HtmlViewServiceSoap htmlViewServiceSoap = htmlViewService.getHtmlViewService();
String reportPath = request.getParameter("reportLocation");
//sAWSessionServiceSoap.logon(userName, password);
SAWLocale sawlocale = new SAWLocale();
sawlocale.setLanguage(request.getLocale().getLanguage());
sawlocale.setCountry(request.getLocale().getCountry());
SAWSessionParameters sessionparams = new SAWSessionParameters();
String userAgent = request.getHeader("User-Agent");
sessionparams.setUserAgent(userAgent);
sessionparams.setLocale(sawlocale);
sessionparams.setAsyncLogon(false);
AuthResult result = sAWSessionServiceSoap.logonex(userName, password, sessionparams);
String sessionID = result.getSessionID();
List<String> li = new ArrayList<String>();
li.add(sessionID);
sAWSessionServiceSoap.keepAlive(li);
Cookie cookie = new Cookie("ORA_BIPS_NQID", sessionID);
cookie.setDomain(host);
cookie.setPath(OBIEEContext);
cookie.setComment("user is not eligible to take the survey this time");
cookie.setMaxAge(24 * 60 * 60);
response.addCookie(cookie);
//start page
StartPageParams option = new StartPageParams();
option.setIdsPrefix("fzz");
option.setDontUseHttpCookies(true);
Random r = new Random(System.currentTimeMillis());
//Report to page
String pageID = htmlViewServiceSoap.startPage(option, sessionID);
String randomValue = "fz" + (1 + r.nextInt(2)) * 10000 + r.nextInt(10000);
ReportRef ref = new ReportRef();
ref.setReportPath(reportPath);
//ref.setReportXml("");
//htmlViewServiceSoap.setBridge(request.getContextPath() + "/bridgeservlet" , sessionID);
ReportHTMLOptions htmlOptions = new ReportHTMLOptions();
htmlOptions.setEnableDelayLoading(false);
htmlViewServiceSoap.addReportToPage(pageID, randomValue, ref, null, null, htmlOptions, sessionID);
//getHeadersHtml
String outputHeader = htmlViewServiceSoap.getHeadersHtml(pageID, sessionID);
//getHtmlForReport
String outputhtml = htmlViewServiceSoap.getHtmlForReport(pageID, randomValue, sessionID);
StringBuffer output = new StringBuffer();
output.append("<HTML>");
output.append("<HEAD>");
output.append(outputHeader);
output.append("</HEAD>");
output.append("<BODY>");
output.append(outputhtml);
output.append("</BODY>");
output.append("</HTML>");
return output;
} catch (Exception ex) {
ex.printStackTrace();
StringBuffer erroutput = new StringBuffer();
return erroutput.append(ex.getMessage());
}
Step 3 : Access report using below sample url.
http://host:port/ADFOBIEEReport/faces/analyticsservlet?reportLocation=<Report Location>
Sample URL and QNAME:
OBIEE_ANALYTICS_URL=http://host:port/analytics/saw.dll/wsdl/v7
OBIEE_ANALYTICS_QNAME=urn://oracle.bi.webservices/v7
OBIEE_ANALYTICS_CONTEXT=/analytics
Note:
To display report in IFRAME follow below steps.
<InIFrameRenderingMode>allow</InIFrameRenderingMode>
<context-param>
<param-name>oracle.adf.view.rich.security.FRAME_BUSTING</param-name>
<param-value>never</param-value>
</context-param>
Happy Coding !!!!!!!
ReplyDeleteThank you for your sharing!
selimsaray@gmail.com