Exposing Business Objects to Java

Hi
I need to use SAP BO in my Java application. Could anyone please suggest what is the best way to do this? Do I need to expose it as a web service only or are there any other better approaches?
Thanks

You may be posting to the wrong forum - here it's for the SAP BusinessObjects Business Intelligence suite of products - BusinessObjects Enterprise, Crystal Reports Server, etc.
Which Business Objects would you be referring to?
Sincerely,
Ted Ueda

Similar Messages

  • How to call webservices in business objects from java

    hi everyone, i am having a scenerio were a program which is written in java, this java program will instantiate when i get the data into my database. the java program need to fire and pass the parameters to the webservices in the business objects to create a file depending upon the parameters which r passed by the java to webservices. how i need to cinfigure in business objects webservicess,to get what i am looking or what r the things i need
    we r using xi 3.1 sp3, web application server tomcat.

    Hi,
    case 1: for WDP, you can create the web service model via "Import Adaptive Web Service" or "Import Web Service Model (deprecated)" by supplying wsdl URL.
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/wdjava/faq%2b-%2bmodels%2b-%2badaptive%2bweb%2bservice
    case 2: In ABAP, create a proxy object at trx code SE80.
    http://help.sap.com/saphelp_nw04s/helpdata/en/bf/d005244e9d1d4d92b2fe7935556b4c/frameset.htm
    Both cases are wizard-based. It's pretty intuitive.
    - julius

  • Queston of Business Object in Java

    Hi there,
    In business object context from Java, what is the meaning of "instance management algorithms"?
    Thanks
    Neo

    its similar to the session tracking in a web page, its in context of a particular object

  • Exposing Business Object as Web Service

    Hi,
    I've designed a Business Object and would like to expose its findAll Operation as a web service. The wizard tells that the operation has “Improper operation message cardinality". While browsing through saphelp I found this: http://help.sap.com/saphelp_nwce10/helpdata/en/44/24128b347c1c9fe10000000a11466f/content.htm
    That’s nice to know but doesn't solve my problem. How do I create a web service that returns ALL objects?
    Thanks in advance for your help.
    Bastian
    edit:
    this on solved it:
    CE/CAF: Expose service as Webservice

    Hi,
    you need to create wrapper method of findAll,
    The reason you are not able to expose it as service because findAll resturning array of values instead of one response (or candinality of return is 0..n). So create one wrapper complex type add your BO as datatype of that complex type with multiple cardinality,
    In new method add this complex type as response (with cardinality 0..1) and within code call standard findAll and mapp return value to complext type.
    It will work.
    Regards,
    Gourav

  • Cannot select find operations when exposing Business Object

    Hi,
    I have created a business object from which I need to 'find' instances. The business object has to be exposed as a web service.
    The business object has 'find***' operations. However, I cannot select those operations when I try to expose the business object as a web service.
    How can I get those operations to be selected?
    Regards,
    Rahul

    Rahul-
    There is a limitation with CAF web services that they can not cater to collections. The findXXX methods always return collections hence they can not be exposed as web services. There are alternatives however - create a custom Complex Type which contains the collection. Create a method in an Application Service which calls your findXXX method and then returns the collection "through" the custom type you have created.
    For example, if you want to return a list of purchase orders create a wrapper structure as follows:
    ReturnStructure     
         PurchaseOrders [0..n]
    Cheers-
    Atul

  • Exposing business objects in an existing Servlet WebApp as Webservices

    Hi,
    I am extending a legacy Servlet application (running under Tomcat 5.5).
    I want to expose a class as a web service. What is the best way to do this ?
    I have tried these so far without much success
    1. Dropped Axis2.war in WebApp with my web service as a .aar file in services.
    This introduces additional issues like intra-webapp communication.
    The Webservice implementation uses objects in the legacy servlet.
    I am yet to find a simple standard mechanism to achieve this.
    2. Embed Axis2 inside the servlet.
    I followed the following example to do this.
    http://hacimbengali.blogspot.com/2007/05/adding-axis2-webservice.html
    Basically, wrote another servlet, extended from AxisServlet and
    added my POJO as a service. The code seems to execute without generating exceptions, but I am unable to invoke
    my webservice or generate the WSDL from the browser by issuing http://localhost:8080/axis2/services/myservice?wsdl
    The same class works if I make calls from a java console app and start SimpleHTTPServer.
    So I am puzzled why this does not work in Tomcat
    My code
    //----------------------------------begin code--------------------------------------------------------
    public class AxisXServlet extends org.apache.axis2.transport.http.AxisServlet {
    static final long serialVersionUID = 1L;
    /* (non-Java-doc)
         * @see javax.servlet.http.HttpServlet#HttpServlet()
         public AxisXServlet() {
              super();
         /* (non-Javadoc)
         * @see javax.servlet.GenericServlet#init()
         public void init(ServletConfig config) throws ServletException
         super.init(config);
         AxisService service;
         try {
         service = AxisService.createService(
                   FPWSImpl.class.getName(),
                   axisConfiguration);
         //RPCMessageReceiver.class);
         //service.setName();
         axisConfiguration.addService(service);
         axisConfiguration.startService(service.getName());
         } catch (AxisFault e) {
         e.printStackTrace();
    //----------------------------------------end code-----------------------------------------------------------

    Hi ialexei,
    Have got the solution for your problem?. If yes, please post it here. I have same situation like this.
    I have developed a java web application and the purpose of the application is to fetch the data which are updated or new from another site using their remote services. This operation is being performed in a fixed interval using a timer in my application. After getting the result from remote site, presently, I am keeping it in memory (Need at least 512 MB RAM). I have created a servlet and created some methods. These methods are accessible by passing the methodname as query parameter while calling the servlet. I have also created a web service for the methods which are available in servlet (in a separate class).
    I have deployed the web service on Tomcat 5.0/Axis and web application on Tomcat ( same instance of Tomcat). Since one is web service and other is web application, I am duplicating the business logic/components and both are running separately also. I would like to use my business logic/components on either in web service or web application and divert the call from one to other.
    I mean,
    (1) if I use the business logic/components on web service, then from my servlet, I would like to call the web service and return the result
    (2) if I use the business logic/components on web application, then from my web service, I would like to call the servlet and return the result
    Pl. advice me which one from the above methods is good and how to implement that.
    --Sabeer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Problems with Java and Business Objects

    <p>Hello everybody,<br /><br />I&#39;m new in BusinessObjects/Crystal Report. Now, I have some problems with Business Objects for Java (Business Objects XI Release 2 Developer).</p><p> </p><p>1)  I create a report in the report designer. This report has a parameterfield. Before I run this report within a jsp web application I want fill the parameterfield with some values from the database. I found the following code snippet for this problem in your forum. But it don&#39;t works right, because it occurs a simple input field instead of a combo box with my database values. Where is my mistake? I need the combo box! (In debug mode I saw that the parameterfield was filled with my data!)</p><p><%@page import="com.crystaldecisions.report.web.viewer.CrystalReportViewer,com.crystaldecisions.sdk.occa.report.application.ReportClientDocument,<br />com.crystaldecisions.sdk.occa.report.application.OpenReportOptions,<br />com.crystaldecisions.sdk.occa.report.lib.ReportSDKExceptionBase,<br />java.io.IOException,<br />java.sql.Connection,<br />java.sql.DriverManager,<br />java.sql.ResultSet,<br />java.sql.SQLException,<br />java.sql.Statement,<br />java.util.Locale,<br />com.crystaldecisions.sdk.occa.report.application.DataDefController,<br />com.crystaldecisions.sdk.occa.report.data.FieldDisplayNameType,<br />com.crystaldecisions.sdk.occa.report.data.ParameterField,<br />com.crystaldecisions.sdk.occa.report.data.ParameterFieldDiscreteValue,<br />com.crystaldecisions.sdk.occa.report.data.Values,<br />com.crystaldecisions.sdk.occa.report.reportsource.IReportSource"%><%<br /><br />    try {<br /><br />        String reportName = "avoParameterfeld.rpt";<br />        ReportClientDocument clientDoc = (ReportClientDocument) session.getAttribute(reportName);<br /><br />        if (clientDoc == null) {<br />            // Report can be opened from the relative location specified in the CRConfig.xml, or the report location<br />            // tag can be removed to open the reports as Java resources or using an absolute path<br />            // (absolute path not recommended for Web applications).<br /><br />            clientDoc = new ReportClientDocument();<br />            clientDoc.setReportAppServer("inproc:jrc");<br />            // Open report<br />            clientDoc.open(reportName, OpenReportOptions._openAsReadOnly);<br /><br />             // Connection Info for fetching the resultSet<br />            String connectStr = "jdbc:oracle:thin:@it1srv19:1521:itoracle";<br />            String driverName = "oracle.jdbc.driver.OracleDriver";<br />            String userName = "user";        <br />            String password = "password";    <br /><br />            // TODO: Ensure this query is valid in your database. An exception will be thrown otherwise.<br />            String query = "SELECT DISTINCT AVONR FROM MBDEADM.AVO ORDER BY AVONR";<br />            ResultSet paramData = null;<br />           <br />            //we will now pass the resultset to the parameter to use as Default Values<br />            String parameterName = "AVONR2";<br />            int colIndex = 1; //this is the column in the ResultSet to use as the values<br />           <br />//            Load JDBC driver for the database that will be queried   <br />            Class.forName(driverName);<br /><br />            Connection connection = DriverManager.getConnection(connectStr, userName, password);<br />            Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE , ResultSet.CONCUR_READ_ONLY);<br />           <br />            paramData = statement.executeQuery(query);<br />           <br />            DataDefController dataDefController = clientDoc.getDataDefController();<br />           <br />            ParameterField origParamField = (ParameterField)dataDefController.getDataDefinition().getParameterFields().findField(parameterName, FieldDisplayNameType.fieldName, Locale.getDefault());<br />            ParameterField newParamField = (ParameterField)origParamField.clone(true);<br />           <br />            Values newVals = (Values)newParamField.getDefaultValues().clone(true);<br />            newVals.clear(); <br />            paramData.first();<br />            while(!paramData.isLast()){<br />                ParameterFieldDiscreteValue value = new ParameterFieldDiscreteValue();<br />                value.setValue(paramData.getObject(colIndex));<br />                newVals.add(value);<br />                paramData.next();<br />            }<br />            <br />            dataDefController.getParameterFieldController().modify(origParamField, newParamField);<br />            // Store the report document in session<br />            session.setAttribute(reportName, clientDoc);<br /><br />        }<br /><br />            // ****** BEGIN CONNECT CRYSTALREPORTPAGEVIEWER SNIPPET **************** <br />            {<br />                // Create the CrystalReportViewer object<br />                CrystalReportViewer crystalReportPageViewer = new CrystalReportViewer();<br /><br />                //    set the reportsource property of the viewer<br />                IReportSource reportSource = clientDoc.getReportSource();               <br />                crystalReportPageViewer.setReportSource(reportSource);<br /><br />                // set viewer attributes<br />                crystalReportPageViewer.setOwnPage(true);<br />                crystalReportPageViewer.setOwnForm(true);<br /><br />                // Apply the viewer preference attributes<br /><br />                // Process the report<br />                crystalReportPageViewer.processHttpRequest(request, response, application, null);<br /><br />            }<br />            // ****** END CONNECT CRYSTALREPORTPAGEVIEWER SNIPPET ****************       <br /><br />    } catch (ReportSDKExceptionBase e) {<br />        out.println(e);<br />    }<br />   <br />%><br /><br /><br /><br />2) In a other report I tried to update the data source used by the report at runtime. I used the method &#39;setDataSource(ResultSet rs, String oldTableAlias, String newTableAlias)&#39; of the &#39;DatabaseController&#39;. I got a message like this: &#39;At present in Java reporting Component does not implement&#39;. I use JRC and the docs (http://support.businessobjects.com/global/interactive/xi/om/JRC/default.html) show me this method. Is it not possible to change the data at runtime in JRC? (I tried it with the methods &#39;setDataSource(IXMLDataSet rs, String oldTableAlias, String newTableAlias)&#39;, &#39;setDataSource(Object newds)&#39;, &#39;setDataSource(IDataSet ds, String oldTableAlias, String newTableAlias)&#39;, too. But the result was the same!)<br /><br /><br /><br />3) I tried to use Business Objects in JSF framework (Ver MyFaces 1.1.3) with the same samples above. But in JSF nothing work! I got the following exception. What is my problem? Can you get me a tutorial for jsf/BusinessObjects?<br /><br />08:21:43,165 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception<br />javax.faces.FacesException: com.businessobjects.reports.sdk.JRCCommunicationAdapter<br />    at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:435)<br />    at org.apache.myfaces.application.jsp.JspTilesViewHandlerImpl.dispatch(JspTilesViewHandlerImpl.java:233)<br />    at org.apache.myfaces.application.jsp.JspTilesViewHandlerImpl.renderView(JspTilesViewHandlerImpl.java:219)<br />    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)<br />    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)<br />    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)<br />    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)<br />    at de.itinformatik.mes.web.filter.SynchronizingFilter.doFilter(SynchronizingFilter.java:42)<br />    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)<br />    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)<br />    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)<br />    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)<br />    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)<br />    at de.itinformatik.mes.web.ajax.aa.AAFilter.doFilter(AAFilter.java:54)<br />    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)<br />    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)<br />    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)<br />    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)<br />    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)<br />    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)<br />    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)<br />    at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)<br />    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)<br />    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)<br />    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)<br />    at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)<br />    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)<br />    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)<br />    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)<br />    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)<br />    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)<br />    at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)<br />    at java.lang.Thread.run(Thread.java:595)<br />Caused by: java.lang.ClassCastException: com.businessobjects.reports.sdk.JRCCommunicationAdapter<br />    at com.crystaldecisions.sdk.occa.report.application.ReportClientDocumentState.saveContents(Unknown Source)<br />    at com.crystaldecisions.sdk.occa.report.application.ReportClientDocumentState.save(Unknown Source)<br />    at com.crystaldecisions.xml.serialization.XMLObjectSerializer.save(Unknown Source)<br />    at com.crystaldecisions.sdk.occa.report.application.ReportClientDocument.writeExternal(Unknown Source)<br />    at com.crystaldecisions.sdk.occa.report.application.AdvancedReportSource.writeExternal(Unknown Source)<br />    at com.crystaldecisions.sdk.occa.report.application.NonDCPAdvancedReportSource.writeExternal(Unknown Source)<br />    at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1304)<br />    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1282)<br />    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)<br />    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)<br />    at java.util.Hashtable.writeObject(Hashtable.java:813)<br />    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />    at java.lang.reflect.Method.invoke(Method.java:585)<br />    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)<br />    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)<br />    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)<br />    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)<br />    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1245)<br />    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1069)<br />    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1245)<br />    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1069)<br />    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)<br />    at java.util.ArrayList.writeObject(ArrayList.java:569)<br />    at sun.reflect.GeneratedMethodAccessor669.invoke(Unknown Source)<br />    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />    at java.lang.reflect.Method.invoke(Method.java:585)<br />    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)<br />    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)<br />    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)<br />    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)<br />    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1245)<br />    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1069)<br />    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)<br />    at java.util.ArrayList.writeObject(ArrayList.java:569)<br />    at sun.reflect.GeneratedMethodAccessor669.invoke(Unknown Source)<br />    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />    at java.lang.reflect.Method.invoke(Method.java:585)<br />    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)<br />    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)<br />    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)<br />    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)<br />    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1245)<br />    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1069)<br />    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)<br />    at org.apache.myfaces.application.jsp.JspStateManagerImpl.serializeView(JspStateManagerImpl.java:590)<br />    at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedViewInServletSession(JspStateManagerImpl.java:493)<br />    at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedView(JspStateManagerImpl.java:332)<br />    at org.apache.myfaces.taglib.core.ViewTag.doAfterBody(ViewTag.java:122)<br />    at org.apache.jsp.testCR_jsp._jspx_meth_f_view_0(org.apache.jsp.testCR_jsp:149)<br />    at org.apache.jsp.testCR_jsp._jspService(org.apache.jsp.testCR_jsp:83)<br />    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)<br />    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)<br />    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)<br />    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)<br />    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)<br />    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)<br />    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)<br />    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)<br />    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)<br />    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)<br />    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)<br />    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)<br />    at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:416)<br />    ... 32 more<br /><br /><br />Thanks for your assistance <br /><br />Tosch</p>

    Which Business Objects are you referring to.
    MS .NET has a thing called Business Objects but they only work in .NET.

  • How to use Java SDK to schedule a report in business objects

    hi guys i am having a scenario , were the Java SDK will be passing the parameters dynamically to the report in business objects . the Java SDK is kicked by the file based events. this Java SDK will be on the unix server and the business object is also on the unix server. I am having the crystal reports in boe which need to be triggered by the Java SDK . such that the report is scheduled to a particular location on the unix  for every week,when the java passes the parameters to the report in boe
    Edited by: americansalt on Nov 4, 2010 11:30 AM

    You can do this by using the BOE SDK. Here are some samples:
    http://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/806fc83f-18ba-2b10-f2b9-cbb49963fc93
    Regards,
    Stratos

  • Performance issue with Business Objects Java JRC API in CRXI R2 version

    A report is developed using java JRC API in CR XI release 2. When I generate the report in the designer, it took less than 5 seconds to display the results in crystal report viewer inside the designer. But in the QA environment, when I generate the same report from the application, it takes almost 1 to 1.5 minutes to display the same results in PDF. I also noticed that if the dataset contains bigger volume of data, then the reports are taking even longer almost 15 to 20 minutes.
    While generating the report from the application, I noticed that most of time is taken during the execution of the com.crystaldecisions.report.web.viewer.ReportExportControl Object method as shown in following line of code
    exportControl.processHttpRequest(request, response, context, null)
    We thought the delay in exporting the report to PDF might be the layout of the report and data conversion to PDF for such a bigger volume of data.
    Then we investigated the issue and experimented quickly to generate the same report with same result set data from the application using XML, XSL and converted the output XSL-FO to PDF using Apache FOP (Formatting Objects Processor) implementation. The time taken to export the report to PDF is less than 6 seconds. By doing this experiment, it is proved that the issue is not with conversion of data to PDF but it is the performance problem with Business Objects Java JRC API in CR XI R2.
    In this regard, I searched for the above issue in the SAP community Network Forums -> Crystal Reports and Xcelsius -> Java Development -> Crystal Reports. But I did not find any answers or solutions for this kind of issue in the forums.
    Any suggestion, hint in this matter is very much appreciated.

    Ted, The setReportAppServer problem is resolved. Now I could able to generate the report with hardcoded values in the SQLs in just 6 seconds where as the same report was generated in CRXI R2 in 1 minute 15 seconds as mentioned in the earlier message.
    But, our exisiting application passes the parameter values to the SQLs embedded in the report. For some reason the parameters are not being passed to the report and the report displays only the labels without data.
    As per the crj 12 samples codes, the code is written as shown below.
    1. Created ReportClient Document
    2. SetReportAppServer
    3. Open the report
    4. Getting DatabaseController and switching the database connection at runtime
    5. Then setting the parameters as detailed below
    ParameteFields parameterFieldController = reportClientDoc.getDataDefController().getParameterFieldController();
    parameterFieldController.setCurrentValue("", "paramname",paramvalue);
    parameterFieldController.setCurrentValue("", "paramname",paramavalue);
    byteArrayInputStream = (ByteArrayInputStream)reportClientDoc.getPrintOutputController().export(ReportExportFormat.PDF); 
    6. Streaming the report to the browser
    Why the parematers are not being passed to the report?  Do I need to follow the order of setting these parameters?  Did I miss any line of code for setting Params using  crj 12?
    Any help in this regard would be greatly appreciated.

  • Business Objects parameters names to configure using JAVA SDK for report generation

    Post Author: christof
    CA Forum: JAVA
    Hello All, I have created a small set of reports which need to be generated from a Java application.The Crystal Reports configuration was relatively easy for the parameters as you have control over their names but is this also the case in Business Objects. For some reports I have created parameters linked to a user prompt. What would the parameters name be that I should use in the Java application.Is this then just the prompt text or should we use e.g. a number e.g parameter 1,.. Kind Regards,

    Post Author: Ted Ueda
    CA Forum: JAVA
    Hello Christof,If you're referring to the Crystal Report parameters via code, then you would refer to them by their parameter name, and not their prompt string.I note that, with BusinessObjects (now called Desktop Intelligence), prompts were referred to by their prompt string.Sincerely,Ted Ueda

  • Java with Business Objects not Working under Lion 10.7.5

    I had been successfully running Business Objects under Lion 10.7.5 and Safari 6 until this week.  The recent changes in Java under Apple have bitten me.  I installed Java SE7 Update 9 today, but it doesn't fix the problem.  I receive the error report that follows (in blue)   I've tried to get this to work under Safari and Firefox, but receive the same error in both environments.  Any suggestions? 
    Error Report....
    Java Plug-in 10.9.2.05
    Using JRE version 1.7.0_09-b05 Java HotSpot(TM) 64-Bit Server VM
    User home directory = /Users/TennisonBay
    c:   clear console window
    f:   finalize objects on finalization queue
    g:   garbage collect
    h:   display this help message
    l:   dump classloader list
    m:   print memory usage
    o:   trigger logging
    q:   hide console
    r:   reload policy configuration
    s:   dump system and deployment properties
    t:   dump thread list
    v:   dump thread stack
    x:   clear classloader cache
    0-5: set trace level to <n>
    java.security.AccessControlException: access denied ("java.util.PropertyPermission" "disableUnsupportedFeatureException" "write")
              at java.security.AccessControlContext.checkPermission(AccessControlContext.java:36 6)
              at java.security.AccessController.checkPermission(AccessController.java:560)
              at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
              at java.lang.System.setProperty(System.java:781)
              at com.businessobjects.wp.tc.TCMain.<clinit>(Unknown Source)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor Impl.java:57)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructor AccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at java.lang.Class.newInstance0(Class.java:372)
              at java.lang.Class.newInstance(Class.java:325)
              at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter$1.run(Unknown Source)
              at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:241)
              at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
              at java.awt.EventQueue.access$200(EventQueue.java:103)
              at java.awt.EventQueue$3.run(EventQueue.java:682)
              at java.awt.EventQueue$3.run(EventQueue.java:680)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java: 76)
              at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
              at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:24 4)
              at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
              at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:15 1)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
    java.lang.ExceptionInInitializerError
              at com.jidesoft.plaf.vsnet.VsnetMetalUtils.initComponentDefaults(Unknown Source)
              at com.jidesoft.plaf.LookAndFeelFactory.a(Unknown Source)
              at com.jidesoft.plaf.LookAndFeelFactory.installJideExtension(Unknown Source)
              at com.jidesoft.plaf.LookAndFeelFactory.installJideExtension(Unknown Source)
              at com.businessobjects.wp.designer.DockManager.init(Unknown Source)
              at com.businessobjects.wp.tc.TCMain.setLookAndFeel(Unknown Source)
              at com.businessobjects.wp.tc.TCMain.globalInit(Unknown Source)
              at com.businessobjects.wp.tc.TCMain.init(Unknown Source)
              at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
              at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
              at java.lang.Thread.run(Thread.java:722)
    Caused by: java.lang.ClassCastException: java.util.HashMap cannot be cast to java.awt.RenderingHints
              at com.jidesoft.swing.JideSwingUtilities.<clinit>(Unknown Source)
              ... 11 more

    I have found my own solution, if only temporary, until another Java update clobbers me…
    I followed  the Java instructions to delete Java 7 at http://java.com/en/download/help/mac_uninstall_java.xml
    Then I followed the Apple instructions to get back to Java 6 at http://support.apple.com/kb/HT5559, which involves using the Terminal application.
    Then I closed Safari, and relaunched.  It is now back to where it has been for the past year, working!

  • Problem with PermGen memory (Java) - Tomcat Server - Business Object XI

    We have installed Business Objects XI on a W2003 Standard with SP2 (x86), using Tomcat as web server and MySQL as DBMS. The server has 4 GB of RAM and dual-core processor. From the beginning we have been given the memory problems of the Java virtual machine. The exception that occurs is of type "java.lang.OutOfMemoryError: PermGen space failure". We modify environment variables (JAVA_OPTS) -XX: PermSize = 256m and-XX: MaxPermSize = 512m and install the monitor LambdaProbe to see the use made of memory. We note that at no time was the PermGen memory indicated by these variables, continuing in that has a default 64MB. For this reason we decided to change the Tomcat 5.5 BO included in the version 6.0.20 and also updated Java to version 1.6.0_18-b07, and make deployment by wdeploy.bat file that comes with BusinessObjects (changing config.tomcat55 and tomcat55.xml). The deployment was successful and everything works, but as with the previous version of Java / Tomcat, shortly PermGen memory fills and returns to "hang". In this latest version of Tomcat installed as a service, do not use environment variables, use an application, "Configure Tomcat", which is a tab to pass parameters to the JVM. After looking at many sites, I have seen to be putting "-D" to pass the parameter. Currently this is my configuration:
    -Dcatalina.home = C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0-Dcatalina.base = C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0-Djava.endorsed.dirs = C : \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ endorsed-Djava.io.tmpdir = C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ temp-Djava.util.logging.manager = org.apache.juli . ClassLoaderLogManager-Djava.util.logging.config.file = C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ conf \ logging.properties-Dcom.sun.management.jmxremote-D-Xms2g-D-Xmx2g-D -XX: + UseConcMarkSweepGC-D-XX:-D PermSize = 256m-XX: MaxPermSize = 512m-Daf.configdir = C: / Program Files / Business Objects / Dashboard and Analytics 12.0-D-verbose: gc-D-XX : + PrintGCTimeStamps-D-XX: + PrintGCDetails
    I tried changing the values of-XX: PermSize and XX: MaxPermSize, and modifying the various policies of the Garbage Collector (-XX: + UseConcMarkSweepGC,-XX: + UseParNewGC,-XX: + UseParallelGC, ...), but nothing. Any idea how to get change the value of the report? Or how to solve this problem?
    Thank you!

    Victor,
    Is the Product you are using BusinessObjects Enterprise XI (Release 1)?
    With XIR2 and XI31, Tomcat 5.0 and Tomcat 5.5 are included with the software, and when installed with the BOE installer, you will get an application installed to the startmenu named "Tomcat Configuration".
    Using this "Tomcat Configuration" utility, there are several configuration options available.  On the JAVA tab, you will see the JAVA_OPTS that are set (These are prefixed with "-D") and also your initial and max memory sizes are listed at the bottom (Max 1024 by default in XI31).
    Here is the default setting for permsize in XI31 Tomcat:
    -XX:MaxPermSize=256M
    From your post, your issue might be the spaces in between your values (there should be no spaces, each "-" parameter on its own line).
    I would suggest starting Tomcat and reviewing your stdout.log file to review what options were set.
    Hope that helps
    -Brian

  • How good is the java Ras Sdk in Business objects XI?

    I have programmed some  reports from scratch by using the java ras sdk.
    Somehow I have the feeling that new features of XI like dynamic image location, or
    running totals aren't so well supported as for example through the Crystal report Designer.
    Do others also think that  Business objects is being a bit negligent on this Api?
    Maybe they do not consider the Api as important anymore because most people will be using there web based out of the box jsp components?

    Normally you should run your CR reports in the INfoView. You can start a report either by double clicking on it or by selecting View in the context menu. Still in order to fetch data you have to press the Refresh button in the CR viewer window (in the InfoView).
    In the CMC I assume that you are using the Run now option in the context menu. Please note that this will just schedule your report immediatelly. hen the report is scheduled a new instance is created hich is available in the History of the report. In order to see a report in the CMC select again View in the context menu and you can again fetch data by pressing the Refresh button.
    Regards,
    Stratos

  • Read Before Posting - Where to find Business Objects Java SDK Resources

    Before posting you should look through the various resources below for the answers to your questions. A lot of the "how to" or "where can I find" questions are already answered in the material below.
    Search the Forums
    Use the search feature in these forums to see if your question has already been answered.
    SDK Libraries
    [BI 4.0|http://www.sdn.sap.com/irj/boc/sdklibrary]
    [BusinessObjects Enterprise XI 3.0|http://www.sdn.sap.com/irj/boc/sdklibrary?rid=/webcontent/uuid/90db428d-71ba-2e10-7eb7-d3286eec5ac0]
    [BusinessObjects Enterprise XI Release 2|http://devlibrary.businessobjects.com/BusinessObjectsXIR2SP2/en/devsuite.htm]
    [BusinessObjects Enterprise XI Release 1|http://devlibrary.businessobjects.com/BusinessObjectsXI/en/devlib.htm]
    Crystal Enterprise 10, Not available online.
    [Online Viewable JavaDocs|http://help.sap.com/javadocs/index.htm#sapbobj]
    SAP Notes
    (Formerly known as the Business Objects Knowledge Base)
    This is a good location to find known issues, look up error messages, and general tips and tricks with the BusinessObjects Enterprise product line.
    [https://service.sap.com/notes] (this requires logon to the SAP Service Marketplace).
    Crystal Reports Server, Crystal Reports and Xcelsius SAP Notes are accessible here:
    [https://www.sdn.sap.com/irj/sdn/businessobjects-notes]
    Sample Code Search
    [BusinessObjects Enterprise SDK|https://wiki.sdn.sap.com/wiki/x/HQBmBQ]
    [RAS SDK|https://wiki.sdn.sap.com/wiki/x/HgBmBQ]
    [Web Services SDK|https://wiki.sdn.sap.com/wiki/x/HwBmBQ]
    [Report Engine SDK|https://wiki.sdn.sap.com/wiki/x/IABmBQ]
    [Crystal Reports Java SDK|https://wiki.sdn.sap.com/wiki/x/JgBmBQ]
    [Java Reporting Component SDK|https://wiki.sdn.sap.com/wiki/x/JwBmBQ]
    Business Objects Downloads
    - Service Packs and Fix Packs
    - Merge Modules and Installation Packages
    - Sample Reports and Databases
    [http://service.sap.com/bosap-downloads] (requires logon to SAP Service Marketplace).
    Crystal Report For Eclipse
    [WIKI|https://www.sdn.sap.com/irj/boc/crystalreports-java]
    [Product Portal|https://www.sdn.sap.com/irj/boc/crystalreports-java]
    Crystal Reports Server, Crystal Reports, and Xcelsius Downloads
    [https://www.sdn.sap.com/irj/sdn/businessobjects-downloads]
    Business Objects Articles
    [https://www.sdn.sap.com/irj/sdn/businessobjects-articles]
    Edited by: Aasavari Bhave on Oct 25, 2011 8:49 AM

    Thanks. That was useful.
    -Rajini

  • Java plugin for business objects not found. When trying to modify a business objects query, it says a plugin is required but none are found. What do I need to do?

    I downloaded firefox 4.0 and attempted to use business objects. A screen comes up saying that a plugin is required but when I click on the screen, it say's no plugin is found. I am using the latest version of Java but it seems that the plugin is not there.

    There is workaround.
    Enter “about:config” in the browser’s address bar.
    Search for “html5.parser.enable”.
    Double-click the row to set the value to “false” (row should also go bold to indicate change).
    There is a possibility that it may cause HTML5 compatibility issues down the road but it solved the issue.

Maybe you are looking for