0 votos

Tengo el siguiente problema: yo intento consumir los servicios soap que ofrece ssrs a traves de java. yo utilizo el asistente de consumo de servicios web soap con netbeans (jax-ws (web services client)). una vez generada las clases en mi proyecto intento renderizar un reporte que tengo de prueba.

public static void main(String[] args) {
        ReportExecutionService service = new ReportExecutionService();
        ReportExecutionServiceSoap rs = service.getReportExecutionServiceSoap();

        
        String reportPath = "/PruebaJuan";
        String format = "HTML4.0";
        String devInfo = "<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";
        Holder<byte[]> result = new Holder<byte[]>();
        Holder<String> extension = new Holder<String>();
        Holder<String> mimeType = new Holder<String>();
        Holder<String> encoding = new Holder<String>();
        Holder<ArrayOfWarning> warnings = new Holder<ArrayOfWarning>();
        Holder<ArrayOfString> streamIDs = new Holder<ArrayOfString>();
        try {
            ExecutionInfo execInfo = rs.loadReport(reportPath, null);
            rs.render(format, devInfo, result, extension, mimeType, encoding, warnings, streamIDs);
        } catch (Exception e) {
            System.out.println();
            System.out.println(e);
        }        
        System.out.println(result.value);     
    }

y tengo como resultado lo siguiente 

javax.xml.ws.soap.SOAPFaultException: System.Web.Services.Protocols.SoapException: The session identifier is missing. A session identifier is required for this operation.  ---> Microsoft.ReportingServices.Diagnostics.Utilities.MissingSessionIdException: The session identifier is missing. A session identifier is required for this operation. 
   at Microsoft.ReportingServices.Library.ReportExecution2005Impl.InternalRender(String Format, String DeviceInfo, PageCountMode pageCountMode, Stream& Result, String& Extension, String& MimeType, String& Encoding, Warning[]& Warnings, String[]& StreamIds)
   at Microsoft.ReportingServices.Library.ReportExecution2005Impl.Render(String Format, String DeviceInfo, PageCountMode pageCountMode, Byte[]& Result, String& Extension, String& MimeType, String& Encoding, Warning[]& Warnings, String[]& StreamIds)
   at Microsoft.ReportingServices.WebServer.ReportExecutionService.Render(String Format, String DeviceInfo, Byte[]& Result, String& Extension, String& MimeType, String& Encoding, Warning[]& Warnings, String[]& StreamIds)
null

si alguien me puede ayudar o sabe como hacer para que se pueda renderizar un reporte de ssrs con java se lo agradezco 

preguntado por jdteheran Abr 5 en Java

1 Respuesta

0 votos

Puedes probar a añadir el ExecutionHeader:

String executionId = execInfo.getExecutionID();
ExecutionHeader execHeader = new ExecutionHeader();
execHeader.setExecutionID(executionId);
rs.ExecutionHeaderValue = execHeader;

 

respondido por Ramon [Admin] Abr 6
editado por Ramon [Admin] Abr 9
Disculpa Ramon esos metodos no existen. Sin embargo, muchas gracias por tratar de ayudar

Disculpa, copié cortados los métodos, los he corregido.

Puedes echar un ojo también en: https://blogs.msdn.microsoft.com/christophputz/2010/05/07/accessing-ms-reporting-services-with-java/

Disculpa, este es el error, solo me falta eso.