ssrs 2008에서 드릴 다운 보고서를 가져 오기 위해 Java 프록시를 작성했습니다. 보고서 서버 URL을 통해 액세스하면 완벽하게 작동하지만 내 Java Spring App에서는 기능이 손실됩니다. 예를 들어, 드릴 다운 보고서를 가지고 있는데, 더하기 기호를 클릭하여 확장하면 ssrs url에서 작동하지만 렌더링 된 HTML은 그렇지 않습니다. 보고서 서버 URL을 사용하는 것처럼 작동해야합니다. 여기 내 코드의 샘플입니다. 가능한 경우 말해주십시오.SSRS 및 JAVA 드릴 다운
public String getReport(String ReportUrl) throws Exception
{
ReportExecutionServiceSoapStub service = getService();
ExecutionInfo info = service.loadReport(ReportUrl, null); //Load report
info.setHasDocumentMap(false);
setExecutionId(service, info.getExecutionID()); //You must set the session id before continuing
String format = "HTML4.0"; //Valid options are HTML4.0, MHTML, EXCEL, CSV, PDF, etc
String deviceInfo = "<DeviceInfo><Toolbar>True</Toolbar></DeviceInfo>"; //Only generate an HTML fragment
ByteArrayHolder result = new ByteArrayHolder();
StringHolder extension = new StringHolder();
StringHolder mimeType = new StringHolder();
StringHolder encoding = new StringHolder();
ArrayOfWarningHolder warnings = new ArrayOfWarningHolder();
ArrayOfStringHolder streamIDs = new ArrayOfStringHolder();
service.render(format, deviceInfo, result, extension, mimeType, encoding, warnings, streamIDs); //Render report to HTML
System.out.println(new String(result.value)); //Prints the report HTML; this could be embedded in a JSP
return new String(result.value);
}
public static void setExecutionId(ReportExecutionServiceSoapStub service, String id) throws SOAPException
{
SOAPHeaderElement sessionHeader = new SOAPHeaderElement("http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", "ExecutionHeader");
sessionHeader.addChildElement("ExecutionID").addTextNode(id);
service.setHeader(sessionHeader);
}
public static ReportExecutionServiceSoapStub getService() throws Exception{
String endpoint = "http://192.168.69.213/reportserver/ReportExecution2005.asmx";
AuthPolicy.registerAuthScheme(AuthPolicy.NTLM, JCIFS_NTLMScheme.class);
ReportExecutionServiceSoapStub service = (ReportExecutionServiceSoapStub)new ReportExecutionServiceLocator(getEngineConfiguration()).getReportExecutionServiceSoap(new URL(endpoint));
service.setUsername("192.168.69.213\\administrator");
service.setPassword("secret");
return service;
}
public static org.apache.axis.EngineConfiguration getEngineConfiguration()
{
java.lang.StringBuffer sb = new java.lang.StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
sb.append("<deployment name=\"defaultClientConfig\"\r\n");
sb.append("xmlns=\"http://xml.apache.org/axis/wsdd/\"\r\n");
sb.append("xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\">\r\n");
sb.append("<globalConfiguration>\r\n");
sb.append("<parameter name=\"disablePrettyXML\" value=\"true\"/>\r\n");
sb.append("<parameter name=\"enableNamespacePrefixOptimization\" value=\"true\"/>\r\n");
sb.append("</globalConfiguration>\r\n");
sb.append("<transport name=\"http\" pivot=\"java:org.apache.axis.transport.http.CommonsHTTPSender\"/>\r\n");
sb.append("<transport name=\"local\" pivot=\"java:org.apache.axis.transport.local.LocalSender\"/>\r\n");
sb.append("<transport name=\"java\" pivot=\"java:org.apache.axis.transport.java.JavaSender\"/>\r\n");
sb.append("</deployment>\r\n");
return new org.apache.axis.configuration.XMLStringProvider(sb.toString());
}
감사합니다. 도움을 주시면 감사하겠습니다.