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 

por 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;

 

por
editado por
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.