Threading in the JRC
Hi,
Hoping Ted (or someone as knowledgeable) can answer these questions.
Our web application is using JRC 11.8 to export a RPT file into various formats (pdf, doc, etc). The process that hands the ReportClientDocument is multi-threaded - i.e., we spawn a thread for each export request (each thread has its own separate ReportClientDocument object).
My first question has to do with concurrent processing in the JRC. I understand there is a limit of 5 Concurrent Processing License for the JRC. I read in one of the posts that any time a request is made from the JRC viewer (zoom, paging, etc), one CPL is used and released only when the request is returned.
Question #1: Does the CPL limit apply if I export a report using ReportClientDocument.getPrintOutputController.export (versus CrystalReportViewer.processHttpRequest)?
I ask this because I ran a test in which I spawned 20 java threads, exporting 20 reports - with logging turned on (DEBUG level). When I looked at the log, I did not see any indication that there is any JRC thread being queued. Is this because 1) CPL is not in effect, thus no queueing; OR 2) the log simply does not show queueing, only blocking error?
Question #2: Am I correct to assume that there is only one instance (for a lack a better word) of the JRC running in my web app? That is, I assume that when I first export a report, the JRC is loaded into memory. Subsequent exports/viewing uses the same JRC, right? When the CPL limit is met, am I correct that the same JRC simply sits there until one of the JRC thread is released (at which point it processes the next request)? In other words, is there ever a point where there are multiple JRCs running in my web app? Is that even possible?
Question #3: Assuming it is possible to have multiple JRCs, is it possible to manually invoke them so that we can process more than 5 requests at a time? This is a somewhat naughty question obviously but we are looking at options at scaling our in-app reporting capability. It may very well be that we'll purchase CR Server or BO XI. But we need to investigate this as an option.
Question #4: Has anything changed in regards to how CPL works with the JRC that comes with CR 2008? Also, can CR2008 JRC support multiple JRCs?
Thank you in advance. Any answer to the questions above is greatly appreciated.
Robert
Hello Robert,
1. It will take up a CPL from when you call *.export() till it returns. Export is one process request. Look in the log files for JRCAgent<incremental number here>, e.g., JRCAgent1, JRCAgent2, etc. You should see multiple agents.
2. It's per-JVM-process. Additional requests are queued.
3. See # 2 above. Have a look at [Crystal Reports Developer Advantage|https://ecohub.sdn.sap.com/irj/ecohub/solutions/crystalreportsdevadvantage] for licensing that covers your use case.
4. The CR 2008 version is [Crystal Reports for Eclipse 2.0|https://www.sdn.sap.com/irj/boc/crystalreports-java]. It still uses the CPL model.
Sincerely,
Ted Ueda
Similar Messages
-
Error: A document processed by the JRC engine cannot be opened in the C++
Hi,
I developed a Web Application, wich have some Crystal Reports. I am using VS2010, C#, Framework 4 and I installed the last version of CR.
The thing is that if I run the application with Visual Studio it works fine, it show the reportes without errors, but when I deploy it (in the same machine, just to try), I am getting the error:
Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack
[COMException (0x80041811): Unsupported Operation. A document processed by the JRC engine cannot be opened in the C+ stack+
+CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) 0
+CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) 147
+CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() 422
[CrystalReportsException: Could not load the report.]
+CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() 549
+CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) 1613
+CrystalDecisions.CrystalReports.Engine.ReportClass.Load(String reportName, OpenReportMethod openMethod, Int16 parentJob) 161
+CrystalDecisions.CrystalReports.Engine.ReportDocument.EnsureLoadReport() 168
+CrystalDecisions.CrystalReports.Engine.ReportDocument.get_ReportDefinition() 73
+AplicacionWeb.Shared.PrintReports.ImprimirReservaEvento(Int32 idEvento, Int32 idTipoEvento, String rutaNombreReporte) 143
+System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 154
+System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 3707
This is the portion of code that calls the report.
protected void btnImprimirReserva_Click(object sender, EventArgs e)
{ PrintReports printReports = new PrintReports();
string ruta = string.Empty;
int idEvento = int.Parse(hdnIdEvento.Value);
int idTipoEvento= int.Parse(ddlTipoDeEvento.SelectedValue);
ruta = Server.MapPath("/Reportes
rptEvento.rpt");
printReports.ImprimirReservaEvento(idEvento, idTipoEvento, ruta);
public void ImprimirReservaEvento(int idEvento, int idTipoEvento, string rutaNombreReporte)
{ int cantCopias = (idTipoEvento == TiposEvento.Egreso.GetHashCode() ? 3 : 2);
TextObject originalDuplicado;
rptEvento oReporte = new rptEvento();
oReporte.FileName = rutaNombreReporte;
originalDuplicado = (TextObject)oReporte.ReportDefinition.ReportObjects["txtOriginalDuplicado"];
for (int i = 0; i < cantCopias; i++)
oReporte.SetParameterValue("@id_evento", idEvento);
if (i == 0)
originalDuplicado.Text = "Original";
if (i == 1)
originalDuplicado.Text = "Duplicado";
if (i==2)
originalDuplicado.Text = "Triplicado";
oReporte.PrintToPrinter(1, false, 0, 0);
I tried several things but I can not solve the problem. Could you please help me with that issue?
Edited by: frangambino on Feb 15, 2012 4:20 AMHi,
Take a look at below threads where this issue is discussed,
[http://forums.sdn.sap.com/thread.jspa?threadID=2011850|http://forums.sdn.sap.com/thread.jspa?threadID=2011850]
[http://forums.sdn.sap.com/thread.jspa?threadID=1975259|http://forums.sdn.sap.com/thread.jspa?threadID=1975259]
[http://forums.sdn.sap.com/thread.jspa?threadID=2031409|http://forums.sdn.sap.com/thread.jspa?threadID=2031409]\
Also, is it a 64 bit machine? check the target platform of the application and set it accordingly.
Few things to try
- Check if the reports exist and are accessible by the application (permissions, filepath,)
- Do not publish the report using the publish option, just as a test copy them manually.
See if this helps,
- Bhushan. -
A document processed by the JRC engine cannot be opened in the C++ stack.
I keep getting this error message after I deploy a Visual Studio 2010 .net web application to my server. The application works perfectly in the development environment but it will not work on my Win 2003 32bit IIS6.0 web server. Below is also the error logged into the windows application log file.
Event Type: Warning
Event Source: ASP.NET 4.0.30319.0
Event Category: Web Event
Event ID: 1309
Date: 8/5/2011
Time: 9:38:39 AM
User: N/A
Computer: IM-WEB1
Description:
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 8/5/2011 9:38:39 AM
Event time (UTC): 8/5/2011 2:38:39 PM
Event ID: f247f1c1b10745cabfad5864403ef15f
Event sequence: 11
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1922464104/Root-2-129570287010549171
Trust level: Full
Application Virtual Path: /
Application Path: E:\websites\enmarkscanning\
Machine name: IM-WEB1
Process information:
Process ID: 8048
Process name: w3wp.exe
Account name: NT AUTHORITY\NETWORK SERVICE
Exception information:
Exception type: CrystalReportsException
Exception message: Load report failed.
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.get_ProductLocaleID()
at CrystalDecisions.ReportSource.CachedObjectReportSource.GetReport(RequestContext context, Boolean bAddToCacheWhenCreated)
at CrystalDecisions.Web.CrystalReportSource.get_ReportDocument()
at Reports_POD.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.
at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
Request information:
Request URL: http://scanning/Rpt_POD.aspx?ID=169663
Request path: /Rpt_POD.aspx
User host address: 10.69.11.3
User: wills
Is authenticated: True
Authentication Type: Forms
Thread account name: NT AUTHORITY\NETWORK SERVICE
Thread information:
Thread ID: 6
Thread account name: NT AUTHORITY\NETWORK SERVICE
Is impersonating: False
Stack trace: at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.get_ProductLocaleID()
at CrystalDecisions.ReportSource.CachedObjectReportSource.GetReport(RequestContext context, Boolean bAddToCacheWhenCreated)
at CrystalDecisions.Web.CrystalReportSource.get_ReportDocument()
at Reports_POD.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Edited by: Don Williams on Aug 5, 2011 12:35 PMHere is the error details in the web browser
Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Runtime.InteropServices.COMException: Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[COMException (0x80041811): Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.]
CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +95
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +270
[CrystalReportsException: Load report failed.]
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +333
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.get_ProductLocaleID() +31
CrystalDecisions.ReportSource.CachedObjectReportSource.GetReport(RequestContext context, Boolean bAddToCacheWhenCreated) +438
CrystalDecisions.Web.CrystalReportSource.get_ReportDocument() +201
Reports_POD.Page_Load(Object sender, EventArgs e) +54
System.Web.UI.Control.OnLoad(EventArgs e) +91
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207
Any help is greatly appreciated.
Thanks! -
Can multiple threads share the same cursor in berkeley db java edition?
We use berkeley db to store our path computation results. We now have two threads which need to retrieve records from database. Specifically, the first thread accesses the database from the very beginning and read a certain number of records. Then, the second thread needs to access the database and read the rest records starting from the position where the cursor stops in the first thread. But, now, I cannot let these two threads share the same cursor. So, I have to open the database separately in two threads and use individual cursor for each thread. This means I have to in the second thread let the cursor skip the first certain number of records and then read the rest records. However, in this way, it is a waste of time letting the second thread skip a certain of records. It will be ideal for us that the second thread can start reading the record just from the place where the first thread stops. Actually, I have tried using transactional cursor and wanted to let the two threads share the same transactional cursor. But it seems that this didn't work.
Can anyone give any suggestion? Thank you so much!
sgaoIf your question is really about using the BDB Java Edition product please post to the JE forum:
Berkeley DB Java Edition
If your question is about using the Java API of the BDB (C-based) product, then this is the correct forum.
--mark -
Crystal report from JSP using the JRC
Hi, I am trying to call crystal report from JSP using the JRC.
But i am getting the Error as 'Logon Failed'. my web.xml entry is
<env-entry>
<env-entry-name>jdbc/Test</env-entry-name>
<env-entry-value>!oracle.jdbc.driver.OracleDriver!jdbc:oracle:thin:{userid}/{password}@//10.0.0.1:1521/TestDB</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
i am setting the userid and password in the code. Please see the below code for your reference. Please help me to solve the issue.
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ page import="com.crystaldecisions.report.web.viewer.CrystalReportViewer"%>
<%@ page import="com.crystaldecisions.sdk.occa.report.data.*"%>
<%@ page import="com.crystaldecisions.reports.reportengineinterface.JPEReportSourceFactory" %>
<%@ page import="com.crystaldecisions.sdk.occa.report.reportsource.IReportSourceFactory2" %>
<%@ page import="com.crystaldecisions.sdk.occa.report.reportsource.IReportSource" %>
<%@ page import="com.crystaldecisions.reports.reportengineinterface.JPEReportSource" %>
<html>
<head>
<title>Crystal Report with Database Logon information</title> </head>
<body bgcolor="#ffffff">
<%
try
String report = "/TEMPLATE.rpt";
IReportSourceFactory2 rptSrcFactory = new JPEReportSourceFactory();
JPEReportSource reportSource = (JPEReportSource) rptSrcFactory.createReportSource(report, request.getLocale());
CrystalReportViewer viewer = new CrystalReportViewer();
viewer.setReportSource(reportSource);
viewer.setHasRefreshButton(true);
IConnectionInfo newConnInfo = new ConnectionInfo();
newConnInfo.setUserName("TEST");
newConnInfo.setPassword("TEST");
ConnectionInfos newConnInfos = new ConnectionInfos();
newConnInfos.add(newConnInfo);
viewer.setDatabaseLogonInfos(newConnInfos);
viewer.setEnableLogonPrompt(false);
viewer.setOwnPage(true);
viewer.setOwnForm(true);
out.println("Connection Information: "+viewer.getDatabaseLogonInfos().getConnectionInfo(0).getAttributes().toString());
viewer.processHttpRequest(request, response, getServletConfig().getServletContext(),null);
viewer.dispose();
catch(Exception e)
throw new JspException( e);
%>
</body>
</html>I never really had much luck with this approach.
Mind you I was using Crystal Reports 10, and as far as I recall it didn't allow setting/changing of database at this level.
Things to check
- can you create a database connection on your page with this URL/username/password?
- what server are you using? Tomcat? WebLogic?
I found this in your other post:
Connection Information: {Server Name=ee6rpt, Connection String=DSN=s(ee6rpt);User ID=s(ee62test);Password=;UseDSNProperties=b(false), Database Name=, Database DLL=crdb_odbc.dll}That would indicate it is using odbc to connect to the database (crdb_odbc.dll). ODBC is a bad idea with java.
The way I have got it to work for me (after much trial and error) was to in Crystal Reports to connect using the Oracle Driver, and specifying a tnsname - eg define REPORT_DS in tnsnames.ora.
When running through the JRC, it looked for a JNDI datasource under that same name "REPORT_DS".
Don't know if that will help you or not.
Good luck,
evnafets -
Multiple Threads at the same time
I am new to threads but what I am attempting to do is start a new thread for each report frequency. Each thread will be on a timer to loop at that frequency. Say, for example, I had reports defined to run at 60, 90, and 1440 minute frequencies. I want to kick off a thread for each of those frequencies. While this code does work, it does not start the next thread until the first one is done. Can I get this loop to spawn threads without caring if the preceeding one is finished or not?
Here is the code.
public class Monitor {
public Monitor() {
super();
public static void main(String[] args) throws Exception {
try {
ResourceBundle properties = ResourceBundle.getBundle("report");
String db_driver = properties.getString("DB_DRIVER");
String db_url = properties.getString("DB_URL");
String db_user = properties.getString("DB_USERNAME");
String db_pwd = properties.getString("DB_PASSWORD");
long freq = 0;
Class.forName(db_driver);
String url = db_url;
Connection con = DriverManager.getConnection(url, db_user, db_pwd);
EventLog.log("Connection Succeeded");
String qryString = "select distinct report_freq as report_freq from reportapp";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(qryString);
ResultSetMetaData rsmd = rs.getMetaData();
EventLog.log("Query Succeeded");
boolean moreReports = rs.next();
while (moreReports) {
freq = rs.getLong("report_freq");
new MonitorThread(freq).start();
moreReports = rs.next();
rs.close();
con.close();
} catch (Exception fatal) {
EventLog.log("Monitor Exception: " + fatal.getMessage());
return;
}//end of main//
//Thread Code//
public class MonitorThread extends Thread {
public MonitorThread(long sleepfor) {
super();
run(sleepfor);
public void run(long sleepfor) {
try {
boolean isReportActive = true;
while (isReportActive) {
long n = sleepfor * 1000L * 60L;
//Call class that runs the reports//
Report.PerformSystemChecks(sleepfor);
Thread.sleep(n);
} catch (Exception fatal) {
EventLog.log("Monitor Exception: " + fatal.getMessage());
return;
}Here how I would do it... I left few parts open, but you should get the idea.
abstract class ScheduledThread extends Thread
long freq, nexttime;
public ScheduledThread(long freq)
nextTime=System.currentTimeMillis()+freq;
this.freq=freq;
public long getNextTime()
return nexttime;
abstract void scheduledRun();
public void run()
nextTime+=freq;
scheduledRun();
class Scheduler extends Thread
Vector sceduled=new Vector();
public synchronized void addSchedule(...)
scheduled.add(sched);
notifyAll();
public long getNextTime()
// get the lowest time returned from all the sceduled threads
public void run()
while (true)
long nextCall=getNextCall();
synchronized (this)
// using wait we can break out of the wait loop if new schedules are added with notify.
long time=nextCall-System.currentTimeMillis();
if (time>0)
this.wait(time);
// go through all the threads and run those that getNextTime()<System.currentTimeMillis()
} -
Multiple threads access the same method.
Hello,
I have been trying for a long time to find out multiple threads access the shared data.
I have written a sample code, there I my intention is that method has to be accessed
onlny one thread at a time., mean one thread finished the job, then next thread can
access the shared source. But for this code I am not getting the desired out put what I want. But if I am using synchronized block I am getting the output. Please correct where I got mistake. Please see my code.
public class TestThread implements Runnable {
Shared r;
public TestThread() {
r = new Shared();
public static void main(String args[]) {
Thread t1 = new Thread(new TestThread());
Thread t2 = new Thread(new TestThread());
t1.setName("A");
t2.setName("B");
t1.start();
t2.start();
* (non-Javadoc)
* @see java.lang.Runnable#run()
@Override
public void run() {
// TODO Auto-generated method stub
r.count();
class Shared {
public synchronized void count() {
String name = Thread.currentThread().getName();
System.out.println(name + ":accessed...");
try {
for (int i = 0; i < 5; i++) {
System.out.println(name + ": " + i);
} catch (Exception e) {
// TODO: handle exception
}Thanks
Bhanu lakshmi.It depends on what you synchronize. Non-static methods synchronize on the object, so if you're using several objects, you'll be able to call each from their own thread.
Make your method synchronized or use only a single object and see the difference. -
Can I combine multiple threads from the same contact in iMessage?
iMessage displays multiple threads for the same contact. Its very confusing and has resulted in lost messages. I've tried changing a number of settings but to no avail. Seems to require everyone in my contact list to eliminate all their email addresses in iMessage.
Begs the question why does iMessage even need this information? Worse, why does it suck it into its settings by default. The directory server should only require a valid Apple ID (associated with the users' devices) in order to direct an iMessage between two contacts.Thanks for the reply, appreciate your input. I did find another way of doing it and that is to highlight the first e-mail, hold down the shift key and click on the last one. That highlights them all and then they can all be deleted. Your ideas also work of course and I thank you for that. Cheers.
-
How to start two threads at the same time
Hi there,
I want to include multithreading in the CVI program. I have two tasks which has no dependence between them, so I would like to start two threads for perform the tasks. I follow the introduction http://www.ni.com/white-paper/3663/en/ to start my code. In my code, I add a command button, when it is pressed, I create two threads to perform the tasks. In each task, I have a big loop and in each iteration, I use ProcessSystemEvents to avoid no response on system message. But it doesn't work actually, the program suspended. I wonder must I initialize the threads in main. I am looking for a way to start the threads in the callback function for a button since I am not starting those threads at the beginning but while it is triggered.
the main frame of the code looks
int CVICALLBACK Test1(void *functionData)
{ int i=0;
for (i = 0; i<100000; i++) {ProcessSystemEvents();}
return 0;
int CVICALLBACK Test2(void *functionData)
int i = 0;
for (i = 0; i<100000; i++) {ProcessSystemEvents();}
return 0;
int CVICALLBACK cmdcb(int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{ int threadID1, threadID2;
if (event==EVENT_COMMIT)
SetPanelAttribute(panelHandle, ATTR_DIMMED, 1);
CmtScheduleThreadPoolFunction(DEFAULT_THREAD_POOL_HANDLE, Test1, NULL, &threadID1);
CmtScheduleThreadPoolFunction(DEFAULT_THREAD_POOL_HANDLE, Test2, NULL, &threadID2);
CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, threadID1, 0);
CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, threadID2, 0);
return 0;
Attachments:
TestThread.zip 239 KBIn my opinion your threads may be simply lasting longer than expected due to an incorrect sleep policy of threads paired with with ProcessSystemEvents () in the loop.
I made up a quick example that shows this behaviour: playing with "Do not sleep" and "Call ProcessSystemEvents" options you can see how threads execute.
BTW: do not forget to release the thread function IDs at the end of functions.
Proud to use LW/CVI from 3.1 on.
My contributions to the Developer Zone Community
If I have helped you, why not giving me a kudos?
Attachments:
thread.zip 7 KB -
RFC: Introduce new 'Article/Tutorial (Comment) Threads' in the Web Dynpro Forum
Some time ago I've suggested on SCN Support is both forum moderator and most active articles wrtiter
Valery Silaev
SaM Solutions
http://www.sam-solutions.net
Message was edited by: Bertram Ganz
This thread was branched from forum thread: How to print the data of a Model node.Hi Valery,
thanks for this great idea. Indeed, there is no channel set up to communicate feedback/suggestions/questions to Web Dynpro tutorials or articles in a standardized way.
WebLogs can be commented on the WebLog page itself and they are announced in a special ;\ New Web Dynpro Weblogs which can be opened via the <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/uuid/49f2ea90-0201-0010-ce8e-de18b94aee2d">Web Dynpro Feature2Sample Matrix</a>. Actually the section 'Further Information' lists all related articles, WebLogs etc. These links are regularly updated so that the Sample Description Pages helps to keep all links to valuable information in a central place.
The 'Sample Description Page' should additionally comprise a section <b>'Discussion'</b> with a link to the above 'Article Comment Thread' in the Web Dynpro forum. The reader downloads the material from the sample description page and also finds a link to the related 'Article Comment Thread' there.
For all new articles (which are combined with a related 'Article Comment Thread') the <i>Further Information</i> links could point to the 'Article Comment Thread' (which then itself links to the article) but not directly to the article resource. The reader can then also have look at the existing comments to the related resource. As an alternative the article PDF itself should have a permanent link to the 'Article Comment Thread' in the Web Dynpro Forum.
Please post your comments on this idea.
Regards, Bertram -
Unexpected database connector error when upgraded to the JRC 12.2.208
Hi,
My reports were working fine when using the CR viewers 11 SDK. In order to use print from the server functionality, I upgraded to JRC 12.2.208. Since then I am getting the following exception. Please help. Thanks!
Line: -
Exception Trace =
com.crystaldecisions.sdk.occa.report.lib.ReportSDKException: Unexpected database connector error---- Error code:-2147467259 Error code name:failed
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(SourceFile:2285)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(SourceFile:2305)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(SourceFile:737)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(SourceFile:167)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(SourceFile:529)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(SourceFile:527)
at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(SourceFile:102)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(SourceFile:525)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(SourceFile:424)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(SourceFile:352)
at com.businessobjects.sdk.erom.jrc.a.a(SourceFile:54)
at com.businessobjects.sdk.erom.jrc.a.execute(SourceFile:67)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(SourceFile:716)
at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(SourceFile:125)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:537)
Line: -
CrystalReport logs:
2010-10-07 09:15:18,390 [http-80-1] DEBUG com.crystaldecisions.reports.dataengine.DataEngineCommand.VerifyDatabaseCommand - VerifyDatabaseCommand,0,Enter CreateCommand,<document=ReportDocument:<report=main><reportPath=C:\ICTS-10-6\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ICTSWeb\reports\rptICERejection.rpt>>;<isFirstVerify=false>;
2010-10-07 09:15:18,390 [http-80-1] DEBUG com.crystaldecisions.reports.dataengine.DataEngineCommand.VerifyDatabaseCommand - VerifyDatabaseCommand,30823955,Exit CreateCommand,<document=ReportDocument:<report=main><reportPath=C:\ICTS-10-6\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ICTSWeb\reports\rptICERejection.rpt>>;
2010-10-07 09:15:18,390 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - command SETUP: VerifyDatabaseCommand
2010-10-07 09:15:18,390 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - command PERFORM: VerifyDatabaseCommand
2010-10-07 09:15:18,390 [http-80-1] DEBUG com.crystaldecisions.reports.dataengine.DataEngineCommand.VerifyDatabaseCommand - VerifyDatabaseCommand,30823955,Enter perform,<document=ReportDocument:<report=main><reportPath=C:\ICTS-10-6\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ICTSWeb\reports\rptICERejection.rpt>>;
2010-10-07 09:15:18,390 [http-80-1] INFO com.crystaldecisions.reports.dataengine.DataEngineCommand.VerifyDatabaseCommand - Verifying database
2010-10-07 09:15:18,390 [http-80-1] INFO com.crystaldecisions.reports.reportdefinition.ReportCommand.CheckDatabaseCommand - CheckDatabaseCommand,0,Enter CreateCommand,<document=ReportDocument:<report=main><reportPath=C:\ICTS-10-6\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ICTSWeb\reports\rptICERejection.rpt>>;
2010-10-07 09:15:18,390 [http-80-1] INFO com.crystaldecisions.reports.reportdefinition.ReportCommand.CheckDatabaseCommand - CheckDatabaseCommand,5205942,Exit CreateCommand,<document=ReportDocument:<report=main><reportPath=C:\ICTS-10-6\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ICTSWeb\reports\rptICERejection.rpt>>;
2010-10-07 09:15:18,390 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - command SETUP: CheckDatabaseCommand
2010-10-07 09:15:18,406 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - command PERFORM: CheckDatabaseCommand
2010-10-07 09:15:18,406 [http-80-1] INFO com.crystaldecisions.reports.reportdefinition.ReportCommand.CheckDatabaseCommand - CheckDatabaseCommand,5205942,Enter perform,<document=ReportDocument:<report=main><reportPath=C:\ICTS-10-6\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ICTSWeb\reports\rptICERejection.rpt>>;
2010-10-07 09:15:18,406 [http-80-1] INFO com.crystaldecisions.reports.queryengine - Connection logon:PreQEServerName=s(DOCSQLDEV01);Provider=s(SQLOLEDB.1);Integrated Security=s(SSPI);Initial Catalog=s(ICTS_DEV);Data Source=s(DOCSQLDEV01);Use Procedure for Prepare=s(1);Auto Translate=s(True);Packet Size=s(4096);Workstation ID=s(DOCCAPWKS708);PreQEServerType=s(Active Data (ADO));Database DLL=s(crdb_javabeans.dll);Java ResultSet=
2010-10-07 09:15:18,406 [http-80-1] INFO com.crystaldecisions.reports.queryengine - Connection logon successfully
2010-10-07 09:15:18,437 [http-80-1] INFO com.crystaldecisions.reports.queryengine - Rowset restart: moveToStart true
2010-10-07 09:15:18,437 [http-80-1] INFO com.crystaldecisions.reports.queryengine - Rowset execute
2010-10-07 09:15:18,437 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - command SETUP: NotUndoableCommand
2010-10-07 09:15:18,437 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - command PERFORM: NotUndoableCommand
2010-10-07 09:15:18,437 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - -- command is NOT UNDOABLE -> purge undo stack
2010-10-07 09:15:18,453 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - command SETUP: NotUndoableCommand
2010-10-07 09:15:18,453 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - command PERFORM: NotUndoableCommand
2010-10-07 09:15:18,453 [http-80-1] DEBUG com.crystaldecisions.reports.common.commandmanager - -- command is NOT UNDOABLE -> purge undo stack
at com.crystaldecisions.sdk.occa.report.application.ReportClientDocument.if(SourceFile:605)
at com.crystaldecisions.sdk.occa.report.application.ReportClientDocument.a(SourceFile:1688)
at com.crystaldecisions.sdk.occa.report.application.ReportClientDocument.new(SourceFile:2650)
at com.crystaldecisions.sdk.occa.report.application.b9.onDataSourceChanged(SourceFile:301)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:962)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(SourceFile:2834)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.setDataSource(SourceFile:2557)
at com.crystaldecisions.reports.sdk.DatabaseController.setDataSource(SourceFile:87)I find in the SAP notes that this is a reported bug in the JRC application.
SAP Note 1416845 - JRC application throws "Unexpected database connector" error
http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_dev/sap%28bd1lbizjptawmq==%29/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333433313336333833343335%7D.do
My question is - Does anyone know when is this bug scheduled to be fixed and released?
Thanks,
Travis -
Unexpected database connector error when upgraded to the JRC 12.2.209
Hi all,
my reports were working fine when using the Java Reporting component version 11.8.4.1094 within a web application.
I upgraded to JRC version 12.2.209.1094 Since then I am getting the following exception:
16:44:33,546 ERROR [JRCCommunicationAdapter] detected an exception: Unexpected database connector error
at com.crystaldecisions.reports.datafoundation.DFQuery.for(SourceFile:632)
at com.crystaldecisions.reports.datalayer.a.do(SourceFile:1621)
at com.crystaldecisions.reports.datalayer.a.a(SourceFile:1404)
at com.crystaldecisions.reports.dataengine.m.b(SourceFile:334)
at com.crystaldecisions.reports.dataengine.j.b(SourceFile:515)
at com.crystaldecisions.reports.dataengine.m.o(SourceFile:408)
at com.crystaldecisions.reports.dataengine.m.a(SourceFile:173)
at com.crystaldecisions.reports.dataengine.ContextNode.a(SourceFile:114)
at com.crystaldecisions.reports.dataengine.ContextNode.a(SourceFile:95)
at com.crystaldecisions.reports.dataengine.j.case(SourceFile:1080)
at com.crystaldecisions.reports.dataengine.h.<init>(SourceFile:108)
at com.crystaldecisions.reports.dataengine.DataContext.a(SourceFile:254)
at com.crystaldecisions.reports.dataengine.DataProcessor2.a(SourceFile:4660)
at com.crystaldecisions.reports.dataengine.DataProcessor2.a(SourceFile:4574)
at com.crystaldecisions.reports.dataengine.DataProcessor2.new(SourceFile:2652)
at com.crystaldecisions.reports.dataengine.DataProcessor2.byte(SourceFile:2610)
at com.crystaldecisions.reports.dataengine.DataProcessor2.try(SourceFile:2282)
at com.crystaldecisions.reports.dataengine.DataProcessor2.int(SourceFile:2442)
at com.crystaldecisions.reports.dataengine.DataProcessor2.I(SourceFile:1013)
at com.crystaldecisions.reports.formatter.formatter.objectformatter.ObjectFormatter.fo(SourceFile:526)
at com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.if(SourceFile:613)
at com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.a(SourceFile:578)
at com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.X(SourceFile:387)
at com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.moveToPageN(SourceFile:339)
at com.crystaldecisions.reports.formatter.export2.a.a(SourceFile:78)
at com.crystaldecisions.reports.formatter.export2.a.a(SourceFile:247)
at com.crystaldecisions.reports.formatter.export2.ExportSupervisorEx.if(SourceFile:642)
at com.crystaldecisions.reports.formatter.export2.ExportSupervisorEx.a(SourceFile:586)
at com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.a(SourceFile:636)
at com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.int(SourceFile:672)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(SourceFile:1944)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(SourceFile:661)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(SourceFile:167)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(SourceFile:529)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(SourceFile:527)
at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(SourceFile:102)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(SourceFile:525)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(SourceFile:424)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(SourceFile:352)
at com.businessobjects.sdk.erom.jrc.a.a(SourceFile:54)
at com.businessobjects.sdk.erom.jrc.a.execute(SourceFile:67)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(SourceFile:716)
at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(SourceFile:125)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:537)
at com.crystaldecisions.sdk.occa.report.application.ds.a(SourceFile:186)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(SourceFile:1558)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(SourceFile:337)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.export(SourceFile:286)
at com.crystaldecisions.sdk.occa.report.application.AdvancedReportSource.export(SourceFile:209)
at com.crystaldecisions.reports.reportengineinterface.JPEReportSource.export(SourceFile:249)
at com.businessobjects.report.web.event.bh.a(SourceFile:158)
at com.businessobjects.report.web.event.o.a(SourceFile:146)
at com.businessobjects.report.web.event.bw.broadcast(SourceFile:93)
at com.businessobjects.report.web.event.am.a(SourceFile:53)
at com.businessobjects.report.web.a.t.if(SourceFile:2104)
at com.businessobjects.report.web.e.a(SourceFile:300)
at com.businessobjects.report.web.e.a(SourceFile:202)
at com.businessobjects.report.web.e.a(SourceFile:135)
at com.crystaldecisions.report.web.ServerControl.a(SourceFile:607)
at com.crystaldecisions.report.web.viewer.ReportExportControl.a(SourceFile:124)
at com.crystaldecisions.report.web.ServerControl.a(SourceFile:131)
at com.crystaldecisions.report.web.ServerControl.getHtmlContent(SourceFile:119)
at it.xxxx.xxx.servlet.xxxx.xxxx.xxxxx(xxxxx.java:338)
16:44:33,656 ERROR [STDERR] Caused by: java.sql.SQLException: ORA-00936: missing expression
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:204)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:693)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:617)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.T2CStatement.executeForDescribe(T2CStatement.java:766)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1077)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1770)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1739)
16:44:33,656 ERROR [STDERR] at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:299)
16:44:33,656 ERROR [STDERR] at org.jboss.resource.adapter.jdbc.WrappedStatement.execute(WrappedStatement.java:91)
16:44:33,656 ERROR [STDERR] ... 99 more
From the Eclipse's console I recovered the query being executed and I have noticed that in the query missing one parameter and some parameters are set up incorrectly to zero. With the old version the parameters were passed correctly to the query and the reports work fine.
Please help. Thanks!
Edited by: Francesco83 on Jan 13, 2011 5:27 PM
Edited by: Francesco83 on Jan 13, 2011 5:29 PM
Edited by: Francesco83 on Jan 14, 2011 12:57 PMI find in the SAP notes that this is a reported bug in the JRC application.
SAP Note 1416845 - JRC application throws "Unexpected database connector" error
http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_dev/sap%28bd1lbizjptawmq==%29/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333433313336333833343335%7D.do
My question is - Does anyone know when is this bug scheduled to be fixed and released?
Thanks,
Travis -
Looking for two possible fixes.
First one:
I am exporting crystal reports to PDF from the JRC. I have a report that contains sub-reports in the group header which when displayed, span multiple pages. In the designer, it starts on a page and then wraps to the next page (as expected). From the JRC, if the subreport spans multiple pages, it displays a blank page first, then the subreport and subsequent pages. So for example, instead of a 12 page report, I get an 18 page report with 6 blank pages.
Second one:
When the sub-report spans multiple pages, I lose the page headers on the subsequent pages with the sub-report only to get the page header back when the next sub-report prints..
Are there any fixes for this?
VictorAllow me to actually re-phrase my problem.
First one:
I am exporting crystal reports to PDF from the JRC. I have a report that contains a group header which when displayed, span multiple pages. In the designer, it starts on a page and then wraps to the next page (as expected). From the JRC, if the group header spans multiple pages, it displays a blank page first, then the group info and subsequent pages. So for example, instead of a 12 page report, I get an 18 page report with 6 blank pages.
I do have the "Keep together" check for the group because I do want a new page every time the group begins to print, but I don't want the blank page in between.
Second one:
When the group spans multiple pages, I lose the page headers on the subsequent pages within the group header only to get the page header back when the next group header prints.. -
Hi!
I', m working with TestStand Version 4.2.1. I have a main sequence, which calkls different subsequences. All these steps are properly reported. One of subsequences runs as "new thread". How can I include its results in common test report of the main sequence?
I have markes variables of the subsequence as it is requred for test report (it works OK if it is not a new thread). If the the numerical test, which is executed in this subsequence is correct, I get no results at all. If the numeric test failed I get somewhere in the main sequence report a "red message", that test failed whithout any reference to the step or values of vaiables which were not correct.
I tried an option "On the fly" in the Report Configuration , but haven' got any useful results. What shall I do?
Best regards
Solved!
Go to Solution.Hi,
I tried it but without success:
1) I got a reference to the Thread as "Locals.Step1=RunState.Thread" for every of 2 steps which start a thread
2) I put both "Waits" after steps with (and without) threads, at the same place, where they were before
3) The sequence run OK, but when it came to Wait for Thread 1 it waited for ever, I had to terminate sequence
Does it mean, that I got a false reference (suppose No - please, have a look at attached pic)?
Or does it mean, that Waits are badly placed in the sequence (threads are already terminated)? Here is a pic of sequeces calls with Wait after them.
Regards
Attachments:
Thread.JPG 34 KB
SequenceCall.JPG 32 KB -
Communication between thread in the same process using file interface.
Hi,
I am developing driver and i need to communicate between two thread.
>can anyone guide me on implementing communication between two thread in the same process using File Interface. First thread will be driver and second will be application.I need to send IOCTL like commands using File interface ie is WriteFile(),ReadFile()
from Host process to driver through file-interface(which run's in driver context).Host process should not be blocked for the duration of the driver to process the command.
>File-interface will run in driver context and it will be responsible to receive command from application and pass it to the driver.
what are the complexity introduced?
>Can anyone also give me the link/reference to get more information on this topic?
>How to replace IOCTL command's for instance baud _rate change command with a file interface for example with IRP.Here is the detailed query:
Hardware Abstraction Layer will interact with Driver(Both will be running in complete different process) .there is a IOCTL for command and File interface for read and write.
My requirement is:
Both should run in the same process so HAL will run as one thread and driver as another thread in the same process .I don't want HAL to wait for completion of request and also i don't want driver to be blocked .
We are planning to use a File Interface for communication between Hardware abstraction layer and Driver
HAL will send the command or read/write operation to a file interface and driver will get the command or read/write request from the File interface
There is a flexibility to change Hardware Abstraction layer and also the Driver
Is it possible to use IOCTL between two thread under same process? if not what other options do we have.
Can we use File interface to send command (like IOCTL) between two thread?
Maybe you are looking for
-
Blue Screen Error after Synching
I had Blackberry Desktop Manager 7 installed on my WIndows XP machine...I have been getting Blue screen errors frequently after my Outlook is synched wiht the device..I was on BDM 6 prior to this and used to consistently get Blue Screen Errors. I us
-
Can't transfer all of my music from my old iPod Touch to my new one?
Recently I purchased a new iPod Touch to replace my well-used, three-year-old one. I would like to remove the music from my old iPod to the iTunes library on the computer, and then sync it on to my new iPod. Most of the music I wanted to transfer was
-
Flash Player Update 11.4.402.278 (Active-X and Plug in).
I have Windows Vista Home Premium SP 2 and IE9 1. Browser tells me I have wrong version of Flash Player. 2. Control panel says I have version 11. 3. I accept download option and start to download 11.4.402.278 from install_flashplayer11x32
-
I have 3 Northwind tables, Employees, EmployeeTerritories, and Territories. I have a cross join table between Employees and Territories. I want to add a column to the cross join table. Each row will contain a 1 if the row employee has the row territo
-
Stock Transfer Between two plants within same company code
Hello, We are using scenario-'Stock transfer between two plants within same company code. Scenaro is like Plant A is receving plant and Plant B is delivering Plant. Plant A release PO for 100 nos to Plant B Plant B issues 100 nos (via delivery) to Pl