Home
Analytics
Getting soap error when try to convert rptdocument to PDF through idapi
sudharshan
<pre class='_prettyXprint _lang-auto _linenums:0'>
public int GenerateCustomFormat(String CustomFormat, String ROIName, String CustomFile) throws Exception
//Call this function to Generate CSV Output
{
try
{
/**Connect to Server*/
/**Convert to CSV*/
com.actuate.schemas.GetContent getContentmsg = new com.actuate.schemas.GetContent();
com.actuate.schemas.ObjectIdentifier obj = new com.actuate.schemas.ObjectIdentifier();
obj.setName(ROIName);
com.actuate.schemas.ViewParameter type = new com.actuate.schemas.ViewParameter();
type.setFormat(CustomFormat);
type.setUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705)");
com.actuate.schemas.ComponentType comp = new com.actuate.schemas.ComponentType();
comp.setId("0");
getContentmsg.setObject(obj);
getContentmsg.setViewParameter(type);
getContentmsg.setComponent(comp);
getContentmsg.setDownloadEmbedded(new Boolean(true));
com.actuate.schemas.GetContentResponse getContentresp = new com.actuate.schemas.GetContentResponse();
System.out.println("Starting time to download as " + CustomFormat + ":" + new java.util.Date().toString());
getContentresp = proxy.getContent(getContentmsg);
System.out.println("Ending time to download as " + CustomFormat + ":" + new java.util.Date().toString());
com.actuate.schemas.Attachment attachment = getContentresp.getContentRef();
System.out.println("Starting time to store the file in local file system." + new java.util.Date().toString());
byte[] contentarray = attachment.getContentData();
FileOutputStream fos = null;
java.io.File pdf = null;
pdf = new java.io.File (CustomFile);
fos = new FileOutputStream(pdf);
fos.write(contentarray);
fos.close();
System.out.println("Ending time to store the file in local file system." + new java.util.Date().toString());
return 1;
}
catch (Exception e)
{
e.printStackTrace();
return 0;
}
}
</pre>
<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
AxisFault
faultCode: Server
faultSubcode:
faultString: Soap Server error.
faultActor:
faultNode:
faultDetail:
{http://schemas.xmlsoap.org/soap/envelope/}RequestName:GetContent
{http://schemas.xmlsoap.org/soap/envelope/}ErrorCode:5016
{http://schemas.xmlsoap.org/soap/envelope/}Description:
<soapenv:Message>Unknown error in the Viewing engine.</soapenv:Message>
Soap Server error.
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2765)
at org.apache.axis.client.Call.invoke(Call.java:2748)
at org.apache.axis.client.Call.invoke(Call.java:2424)
at org.apache.axis.client.Call.invoke(Call.java:2347)
at org.apache.axis.client.Call.invoke(Call.java:1804)
at com.actuate.schemas.ActuateSoapBindingStub.getContent(Unknown Source)
at ActuateControl.GenerateCustomFormat(ActuateControl.java:1016)
at ServerLogin.actuateExecute(ServerLogin.java:82)
at ServerLogin.main(ServerLogin.java:92)
</pre>
Find more posts tagged with
Comments
garyxue
Hi,
When this error occurs do you find any abnormal entries in the iServer log? Look into your Actuate9/iServer/log/ directory, and look into the content of jsrvr*.log and encycsrvr*.log files.
sudharshan
It is throwing the following error in encycsrvr9 log
erver process ID: 2748Resource group name: Default Java View
****0000005124*soapdispatchermsghdlr.cpp*00056*08000*2008JUN17*10:06:53
AcSoapDispatcherMH::AcSoapDispatcherMH
Using Buflen : 10240
Using Invalidate Connection : 0
****0000005156*vsmanager.cpp*01516*09000*2008JUN17*10:07:01
AcViewServerManager: failed to start view server process
****0000005156*vsmanager.cpp*01044*09000*2008JUN17*10:07:01
AcViewServerManager: failed to activate view server process
****0000005156*vsmanager.cpp*00617*09000*2008JUN17*10:07:01
AcViewServerManager, unable to assign request to view server
****0000001488*vsmanager.cpp*01516*09000*2008JUN17*10:11:02
AcViewServerManager: failed to start view server process
****0000001488*vsmanager.cpp*01044*09000*2008JUN17*10:11:02
AcViewServerManager: failed to activate view server process
****0000001488*vsmanager.cpp*00617*09000*2008JUN17*10:11:02
AcViewServerManager, unable to assign request to view server
akulkarni
The correct IDAPI to use for converting BIRT report document on the iServer to PDF is "SelectJavaReportPage".
I have attached sample source to illustrate. You may need to tweak it to get it to work in your environment.
raghu85
<blockquote class='ipsBlockquote' data-author="'akulkarni'" data-cid="33772" data-time="1213828925" data-date="18 June 2008 - 03:42 PM"><p>
The correct IDAPI to use for converting BIRT report document on the iServer to PDF is "SelectJavaReportPage".<br />
<br />
<br />
I have attached sample source to illustrate. You may need to tweak it to get it to work in your environment.<br /></p></blockquote>
Hi,<br />
am trying to acheive the same,<br />
<br />
public void downloadPDF() throws RemoteException{<br />
<br />
String downloadDirectory = "C:\\downloads";<br />
<br />
String outputFileName = "/Home/DEV/Report/THANReport/generatedTHAN/193_1111.rptdocument";<br />
<br />
ServerFile File = new ServerFile( session, outputFileName );<br />
<br />
<br />
<br />
com.actuate.schemas.ObjectIdentifier objectIdentifier =<br />
new com.actuate.schemas.ObjectIdentifier();<br />
<br />
objectIdentifier.setId(File.getFileId());<br />
<br />
objectIdentifier.setName(File.fileName());<br />
<br />
objectIdentifier.setType(File.fileType()); //add this line.<br />
<br />
com.actuate.schemas.PageIdentifier pageIdentifier =<br />
new com.actuate.schemas.PageIdentifier();<br />
<br />
pageIdentifier.setPageNum(new Long(1));<br />
<br />
com.actuate.schemas.SelectJavaReportPage selectJavaReportPage =<br />
new com.actuate.schemas.SelectJavaReportPage();<br />
<br />
selectJavaReportPage.setObject(objectIdentifier);<br />
<br />
NameValuePair[] viewProp =<br />
new NameValuePair[] { new NameValuePair("SVGFlag", "false")};<br />
<br />
ArrayOfNameValuePair viewProps = new ArrayOfNameValuePair();<br />
viewProps.setNameValuePair(viewProp);<br />
selectJavaReportPage.setViewProperties(viewProps);<br />
<br />
selectJavaReportPage.setPage(pageIdentifier);<br />
selectJavaReportPage.setOutputFormat("PDF");<br />
selectJavaReportPage.setDownloadEmbedded(new Boolean(true));<br />
<br />
<br />
// SelectPage<br />
com.actuate.schemas.SelectJavaReportPageResponse selectJavaReportPageResponse =<br />
session.selectJavaReportPage(selectJavaReportPage);<br />
<br />
// Save the result in download directory<br />
File file = new File(downloadDirectory);<br />
<br />
file.mkdir();<br />
<br />
Attachment attc = selectJavaReportPageResponse.getPageRef();<br />
<br />
FileOutputStream out;<br />
try {<br />
out = new FileOutputStream(file);<br />
out.write( attc.getContentData());<br />
} catch (FileNotFoundException e) {<br />
// TODO Auto-generated catch block<br />
e.printStackTrace();<br />
} catch (IOException e) {<br />
// TODO Auto-generated catch block<br />
e.printStackTrace();<br />
}<br />
<br />
}<br />
<br />
above is my code and i get the error below any help ??<br />
AxisFault<br />
faultCode: Server<br />
faultSubcode: <br />
faultString: Soap Server error.<br />
faultActor: <br />
faultNode: <br />
faultDetail: <br />
{<a class='bbc_url' href='
http://schemas.xmlsoap.org/soap/envelope/}RequestName:SelectJavaReportPage'>http://schemas.xmlsoap.org/soap/envelope/}RequestName:SelectJavaReportPage</a><br
/>
{<a class='bbc_url' href='
http://schemas.xmlsoap.org/soap/envelope/}ErrorCode:3311'>http://schemas.xmlsoap.org/soap/envelope/}ErrorCode:3311</a><br
/>
{<a class='bbc_url' href='
http://schemas.xmlsoap.org/soap/envelope/}Description:'>http://schemas.xmlsoap.org/soap/envelope/}Description:</a><br
/>
<soapenv:Message>The specified report cannot be viewed. Viewing Actuate Basic e.Reports requires the e.Report Option to be enabled.<br />
Please contact Actuate to update the System License.</soapenv:Message><br />
<br />
<br />
Soap Server error.<br />
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221)<br />
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128)<br />
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)<br />
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)<br />
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)<br />
at javax.xml.parsers.SAXParser.parse(Unknown Source)<br />
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)<br />
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)<br />
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)<br />
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)<br />
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)<br />
at org.apache.axis.client.Call.invokeEngine(Call.java:2765)<br />
at org.apache.axis.client.Call.invoke(Call.java:2748)<br />
at org.apache.axis.client.Call.invoke(Call.java:2424)<br />
at org.apache.axis.client.Call.invoke(Call.java:2347)<br />
at org.apache.axis.client.Call.invoke(Call.java:1804)<br />
at com.actuate.schemas.ActuateSoapBindingStub.selectJavaReportPage(ActuateSoapBindingStub.java:6316)<br />
at com.actuate.idapi.support.PDFDownload.downloadPDF(PDFDownload.java:121)<br />
at com.actuate.idapi.support.PDFDownload.main(PDFDownload.java:160)
jkamaraj
<blockquote class="ipsBlockquote" data-author="akulkarni" data-cid="33772" data-time="1213828925"><div><p>The correct IDAPI to use for converting BIRT report document on the iServer to PDF is "SelectJavaReportPage".
I have attached sample source to illustrate. You may need to tweak it to get it to work in your environment.</p></div></blockquote><p>I could not find the sample source mentioned in this post. Can forum moderator assist? Thanks</p>
Nagaraj123
<p>Hi, </p>
<p> </p>
<p>I am trying to Download and save roi reports as pdf using soap web services in java(using apache-cxf), I could able to get roi reports as octet-stream but, unable to convert octet-stream to readable document in java. Could anyone help me out on this, I appreciate your help thanks.</p>
<p> </p>
<p>I am using first selectFiles service to get all file Ids than using DownloadFile service and getting roi report as attachment. </p>
<p> </p>
<p>DownLoadFile service response:</p>
<pre class="_prettyXprint _lang-xml">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns="http://schemas.actuate.com/actuate11"/>
<SOAP-ENV:Body>
<ACTU:DownloadFileResponse xmlns:ACTU="http://schemas.actuate.com/actuate11" xmlns="http://schemas.actuate.com/actuate11">
<File>
<Id>8104321001</Id>
<Name>/RetailServices/RS_45602_CT2_Reason_by_Merchant.roi</Name>
<FileType>ROI</FileType>
<PageCount>5</PageCount>
<Size>29162</Size>
<TimeStamp>2016-01-20T15:28:14</TimeStamp>
<Version>1</Version>
<Owner>Administrator</Owner>
<UserPermissions>VSRWE</UserPermissions>
<AccessType>Shared</AccessType>
</File>
<Content>
<ContentId>/RetailServices/RS_45602_CT2_Reason_by_Merchant.roi</ContentId>
<ContentType>Application/Octet-Stream</ContentType>
</Content>
</ACTU:DownloadFileResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</pre>
RSiegler
<p>Nagaraj,</p>
<p> </p>
<p>You will need to use the GetContent call, not the DownloadFile call to convert the ROI to a non-proprietary format.</p>
<p>The GetContent call will also allow you to download/display the same as desired using normal apache/java libraries (such as writing the file byte[] to disk).</p>
Nagaraj123
<p>Hi RSiegler,</p>
<p> </p>
<p>Thanks for your quick reply, For GetContent Service its mandate to specify file type in the header, i referred the Document you posted in other post but I couldn't able to figure it out on what all the tags i need to include. Basically I know the file name, file id and the file type(roi). I tried with the tags i know but getting some errors.Could you please help me out. And also i have tried to install the Server Integration Technology package(<span style="color:rgb(40,40,40);font-family:'Source Sans Pro', sans-serif;"> </span><a data-ipb='nomediaparse' href='
http://developer.actuate.com/deployment-center/integrating-birt-into-applications/),'>http://developer.actuate.com/deployment-center/integrating-birt-into-applications/),</a>in
the process of installation didn't go through the UserId and password setup, when i tried to access iBrit asking for credentials. </p>
<p> </p>
<p><u>GetContent</u>:</p>
<pre class="_prettyXprint _lang-xml">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:act="http://schemas.actuate.com/actuate11">
<soapenv:Header>
<act:TargetVolume>HQ_Prime_COF_QA</act:TargetVolume>
<AuthId>cfMOutp7qK/DDqxQBo6Taky7CkgMzdG/mbVx6KtWPA8mAWZLLDlpTGDetzln+6+IO1EW//kByZdvVUueInrO/CGy4yQrOwx+3AvBiww0iK/tLHCnSISKDC8374L4qxXvFqSM8THCLHk=</AuthId>
<FileType>
<Name>ROI</Name>
</FileType>
</soapenv:Header>
<soapenv:Body>
<act:GetContent>
<act:Object>
<!--Optional:-->
<act:Id>810432100100</act:Id>
<!--Optional:-->
<act:Name>RetailServices/RS_45602_CT2_Reason_by_Merchant.roi</act:Name>
</act:Object>
<act:DownloadEmbedded>false</act:DownloadEmbedded>
</act:GetContent>
</soapenv:Body>
</soapenv:Envelope>
</pre>
<p><u>Response</u>:</p>
<pre class="_prettyXprint _lang-xml">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>Server</faultcode>
<faultstring>Soap Server error.</faultstring>
<detail>
<RequestName>GetContent</RequestName>
<ErrorCode>3331</ErrorCode>
<Description>
<Message>The specified operation could not be performed.
For more information, visit http://www.actuate.com/actuate11/licensing or contact your system administrator.</Message>
</Description>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</pre>
<p>Thanks.</p>
RSiegler
<p>Nagaraj,</p>
<p> </p>
<p>I would strongly suggest utilizing the Java or C# implementations of using WSDL to create classes to interface with the iServer instead of writing raw SOAP.</p>
<p>This being said, an example of how to convert ROI to PDF in Java is below, and below that I will provide the SOAP capture of the same showing the layout of the message.</p>
<pre class="_prettyXprint">
import com.actuate.schemas.*;
import java.io.*;
import java.io.IOException;
public class roi2pdf {
public static void main(String[] args){
try{
com.actuate.schemas.ActuateSoapBindingStub proxy;
ActuateAPIEx actuateAPI;
actuateAPI = new ActuateAPILocatorEx();
actuateAPI.setTargetVolume("MyVolume");
proxy = (ActuateSoapBindingStub) actuateAPI.getActuateSoapPort(new java.net.URL("http://MyServer:8000"));
proxy.setTimeout(0);
com.actuate.schemas.Login request = new com.actuate.schemas.Login();
request.setUser("Administrator");
request.setPassword("");
com.actuate.schemas.LoginResponse response = proxy.login(request);
String authID = response.getAuthId();
actuateAPI.setAuthId(authID);
proxy.setTimeout(0);
actuateAPI.setFileType("ROI");
String report = "";
SelectFiles sf = new com.actuate.schemas.SelectFiles();
sf.setName("/NullReport_9SP3.roi");
sf.setResultDef(new ArrayOfString(new String[]{"Name","Owner"}));
com.actuate.schemas.SelectFilesResponse sfr = proxy.selectFiles(sf);
report = sfr.getItemList().getFile(0).getName();
GetContent gc = new GetContent();
ObjectIdentifier oid = new ObjectIdentifier();
ViewParameter vp = new ViewParameter();
ComponentType ct = new ComponentType();
oid.setName(report);
ct.setId("0");
vp.setFormat("PDF");
gc.setObject(oid);
gc.setDownloadEmbedded(Boolean.TRUE);
gc.setViewParameter(vp);
gc.setComponent(ct);
System.out.println("Begin Download");
GetContentResponse gcr = proxy.getContent(gc);
System.out.println("End Download");
Attachment attachment = gcr.getContentRef();
byte[] content = attachment.getContentData();
String filename = "C:/Temp/"+report+".PDF";
java.io.FileOutputStream fp = new java.io.FileOutputStream(filename);
fp.write(content);
}
catch(Exception q){
q.printStackTrace();
}
}
}
</pre>
<pre class="_prettyXprint _lang-xml">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<AuthId soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">AuthIDValue</AuthId>
<Locale soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">en_US</Locale>
<TargetVolume soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">MyVolume</TargetVolume>
<FileType soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">ROI</FileType>
<DelayFlush soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0"/>
</soapenv:Header>
<soapenv:Body>
<GetContent xmlns="http://schemas.actuate.com/actuate11">
<Object>
<Name>/NullReport_9SP3.ROI</Name>
</Object>
<ViewParameter>
<Format>PDF</Format>
</ViewParameter>
<Component>
<Id>0</Id>
</Component>
<DownloadEmbedded>true</DownloadEmbedded>
</GetContent>
</soapenv:Body>
</soapenv:Envelope>
</pre>
Nagaraj123
<p>Hi RSiegler,</p>
<p> </p>
<p>Thanks very much it worked, not sure whats the problem was. Yeah I am using apache-cxf to generate stubs in java instead of writing raw SOAP, just wanted to test in soap ui before implementing in java.</p>
<p> </p>
<p> </p>
<p>Thanks.</p>
Nagaraj123
<p>Hi All,</p>
<p> </p>
<p> </p>
<p>I am trying to Download files with extension "XLS", i could able to get xls files info by SelectFiles class can i use GetContent class to download the xls files? actually getting error when i try to get content.</p>
<p> </p>
<p>Can i use something like below?</p>
<pre class="_prettyXprint _linenums:NaN">
public static boolean downloadXlsFile(String id, String name, Long version) {
String[] file_name = name.split("/");
GetContentResponse response;
try {
ActuateAPI service = new ActuateAPI();
ActuateSoapPort serviceImpl = service.getActuateSoapPort();
GetContent request = new GetContent();
ObjectIdentifier objIdentifier = new ObjectIdentifier();
objIdentifier.setId(id);
ViewParameter viewParameter = new ViewParameter();
viewParameter.setFormat("XLS");
ComponentType componentTye = new ComponentType();
componentTye.setId("0");
request.setObject(objIdentifier);
request.setViewParameter(viewParameter);
request.setComponent(componentTye);
request.setDownloadEmbedded(true);
response = serviceImpl.getContent(request);
Attachment attachment = response.getContentRef();
byte[] content = attachment.getContentData();
String filename = "c:/Actuate_reports_CIM_Prime/" + file_name[file_name.length-1]+"_"+version+"_"+id + ".XLS";
java.io.FileOutputStream fp;
fp = new java.io.FileOutputStream(filename);
fp.write(content);
fp.close();
} catch (Exception e1) {
System.out.println("*******eroor occured in downloading file path:***********"+ name);
e1.printStackTrace();
return true;
}
</pre>
janderegg
<p>Hi Nagaraj123,</p>
<p>If I understood properly, your XLS file is already created on your volume and you just would like to download it.</p>
<p>If this is the case, then you cannot use the getContent call but need to use the DownloadFile call instead. </p>
<p>The getContent is used to convert the ROI into another format.</p>
<p>Thanks,</p>
<p>Joël</p>