RunReport problem

Hello,
I am new to web service and I'm trying to open BIP report in Apex by using web service (wsdl).
Firstly, I followed the tutorial http://tylermuth.wordpress.com/2008/03/31/call-bi-publisher-web-services-from-apex/ , but I got the error message as below
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <soapenv:Body>
          <soapenv:Fault>
               <faultcode>soapenv:Server.userException</faultcode>
               <faultstring>oracle.apps.xdo.webservice.exception.OperationFailedException: PublicReportService::generateScheduledReport Failure: oracle.apps.xdo.servlet.scheduler.ProcessingException: oracle.xml.parser.v2.XMLParseException: End tag does not match start tag 'session'.</faultstring>
               <detail>
                    <oracle.apps.xdo.webservice.exception.OperationFailedException/>
                    <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">cobra.revion.com</ns1:hostname>
               </detail>
          </soapenv:Fault>
     </soapenv:Body>
</soapenv:Envelope>However, I found another post Calling BI Publisher Web Services from APEX , which relates to the error and provides another solution as below:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pub="http://xmlns.oracle.com/oxp/service/PublicReportService">
   <soapenv:Header/>
   <soapenv:Body>
      <pub:runReport>
         <pub:reportRequest>
            <pub:attributeFormat>pdf</pub:attributeFormat>
            <pub:attributeLocale></pub:attributeLocale>
            <pub:attributeTemplate>New Template 1</pub:attributeTemplate>
            <pub:flattenXML>1</pub:flattenXML>
            <pub:parameterNameValues/>
            <pub:reportAbsolutePath>/~rdpatric/Training/whoami/whoami.xdo</pub:reportAbsolutePath>
            <pub:reportData></pub:reportData>
            <pub:reportDataFileName></pub:reportDataFileName>
            <pub:sizeOfDataChunkDownload>10000</pub:sizeOfDataChunkDownload>
         </pub:reportRequest>
         <pub:userID>user</pub:userID>
         <pub:password>password</pub:password>
      </pub:runReport>
   </soapenv:Body>
</soapenv:Envelope>After creating the Web Service Reference using the code above, I created a button to call a page process which refers to the Web Service Reference.
Now, there is no error message anymore, but the problem is that there's no report generated or opened either. After clicking the button, the page refreshed and went back to the page where the button locates.
Is there anything I missed or did wrong? If you don't mind, please give me some advice. Thank you.
Wang

Hi Sherri
I hope you got an answer for your question... if not, please look at I've found and described at Re: Getting null bytes using PublicReportService_v11.wsdl
IHTH
Marco

Similar Messages

  • Problem with runreport with latest version of BI

    I have downloaded and installed the latest version of BI Publisher 10.1.3.4.1 ; I am using the new WSDL PublicReportService_v11 in a c# application. I was interested in the dynamic data source capabilities. I can no longer run my report. When I call runReport my the ReportResponce is empty and I get no error. When I download the report using downloadReportDataChunk I get the exception:
    "oracle.apps.xdo.webservice.exception.OperationFailedException: PublicReportService::downloadReportDataChunk Failed: due to File [null] Not Found - "
    I know the that the report was generated, I can go to the "xmlpserver\xdo\cache" directory and see the report, however the WebService is no longer returning the data or the temp file id. This worked fine in 10.1.3.4 ; I even tried using the old WSDL in this newer version and it still does not work.
    Has anyone been using the WebService for this newer version?
    Any suggestion would be great!
    Sherri DeAngelis

    Hi Sherri
    I hope you got an answer for your question... if not, please look at I've found and described at Re: Getting null bytes using PublicReportService_v11.wsdl
    IHTH
    Marco

  • Problem with cgicmd.dat in reports 10g

    Dear Sir/Mam,
    I've configured report serve on solaris 10. When executing reports using web url with key map given in cgicmd.dat file, I'm getting a very strange problem. Whatever parameters m passing to the reports through web url an additional "=" character is appended automatically. I'm giving details of the files below. Please help me out. Thanks in advance.
    Content of rwservlet.properties:-
    SERVER_IN_PROCESS=YES
    RELOAD_KEYMAP=YES
    DIAGNOSTIC=YES
    TRACEOPTS=TRACE_ALL
    TRACEFILE=rwservlet.trc
    TRACEMODE=TRACE_REPLACE
    SERVER=test
    #IMAGEURL=http://<web_server_name>:<port_num>/reports/rwservlet
    KEYMAPFILE=cgicmd.dat
    #DBAUTH=RWDBAUTH.HTM
    #SYSAUTH=RWSYSAUTH.HTM
    #ERRORTEMPLATE=RWERROR.HTM
    #COOKIEEXPIRE=30
    ENCRYPTIONKEY=reports9i
    #DIAGBODYTAGS=<reports_servlet_help_file_title>
    #DIAGHEADTAGS=<reports_servlet_help_file_body_tag>
    #HELPURL=<url_of_customized_help_file_for_reports_servlet>
    #SINGLESIGNON=YES
    OID_ENTITY=%REPORTS_OID_ENTITY%
    #ALLOWHTMLTAGS=NO
    #REPORTS_NETWORK_CONFIG=rwnetwork.conf
    #OIDCON_INIT=10
    #OIDCON_INCREMENT=10
    #OIDCON_TIMEOUT=0
    DEFAULTCHARSET=JA16EUC
    #DEFAULTCHARSET=EUC-JP
    Content of cgicmd.dat:-
    osk47zgenp: report=%1 userid=utimainapp/utimainapp@testdb rundebug=NO desformat=delimited destype=cache mode=bitmap mast_ext=roymask.xls p_start_dt=%2 p_end_dt=%3 p_srvc_id=%4 p_sch_id=%5 p_agnt_cd=%6 p_user_id=%7 p_sesn_id=%8
    Report URL is:-
    http://10.10.100.110:8890/reports/rwservlet?osk47zgenp+rp_os424_mat_recon.rdf+30-JUN-2009+01-JAN-2010++31++shashi+1492544
    Error coming on browser:-
    REP-110: File 'rp_os424_mat_recon.rdf=' not found.
    REP-0110: Unable to open file 'rp_os424_mat_recon.rdf='.
    Content of rwservlet.trc:-
    [2011/1/19 7:37:1:624] (RWClient:doGet) enter...
    [2011/1/19 7:37:1:625] Debug 50103 (RWClient:doGet): QueryString: osk47zgenp+rp_os424_mat_recon.rdf+30-JUN-2009+01-JAN-2010++31+
    shashi1492544
    [2011/1/19 7:37:1:625] Info 50103 (RWClient:processRequest): reload key map file: s_reloadKeyMap: YES
    [2011/1/19 7:37:1:626] Debug 50103 (KeyEntry:replaceParams): report=rp_os424_mat_recon.rdf= userid=utimainapp@testdb rundebug=N
    O desformat=delimited destype=cache mode=bitmap mast_ext=roymask.xls p_start_dt=30-JUN-2009= p_end_dt=01-JAN-2010= p_srvc_id=31=
    p_sch_id=shashi= p_agnt_cd=1492544= p_user_id= p_sesn_id=
    [2011/1/19 7:37:1:626] Debug 50103 (RWClientUtility:isFromPortal): portal: null
    [2011/1/19 7:37:1:626] Debug 50103 (RWClientUtility:isFromPortal): webdbversion: null
    [2011/1/19 7:37:1:627] Info 50103 (RWClientUtility:findServer): Failed to bind to server: test
    [2011/1/19 7:37:1:627] Warning 50103 (RWClient:startInProcessServer): start inprocess server test
    [2011/1/19 7:37:1:657] Debug 50103 (NetworkUtility:getIOR): Found a server and returning the IOR
    [2011/1/19 7:37:1:658] Debug 50103 (ServerManager:getServer): Found server class object
    [2011/1/19 7:37:1:659] Debug 50103 (ServerManager:getServer): ping server successfully
    [2011/1/19 7:37:1:660] Debug 50103 (RWClientUtility:getReportsServer): server: test
    [2011/1/19 7:37:1:660] Debug 50103 (ServerManager:getServer): Found server class object
    [2011/1/19 7:37:1:660] Debug 50103 (ServerManager:getServer): ping server successfully
    [2011/1/19 7:37:1:661] Debug 50103 (AuthManager:getAuthId): server secure: false
    [2011/1/19 7:37:1:663] Debug 50103 (RWClientUtility:getReportsServer): server: test
    [2011/1/19 7:37:1:664] Debug 50103 (RWClientUtility:getReportsServer): server: test
    [2011/1/19 7:37:1:664] Debug 50103 (ServerManager:getServer): Found server class object
    [2011/1/19 7:37:1:665] Debug 50103 (ServerManager:getServer): ping server successfully
    [2011/1/19 7:37:1:666] Debug 50103 (RWClientUtility:isFromPortal): portal: null
    [2011/1/19 7:37:1:666] Debug 50103 (RWClientUtility:isFromPortal): webdbversion: null
    [2011/1/19 7:37:1:667] Debug 50103 (RWClient:runReport): cmdline: p_end_dt=01-JAN-2010= baseUrl=http://10.10.100.110:8890/report
    s/rwservlet/getfile/ userid=utimainapp@testdb USER_AGENT="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)" p_srv
    c_id=31= SERVER_NAME=10.10.100.110 jobname="rp_os424_mat_recon.rdf=" p_sesn_id= mast_ext=roymask.xls getFilestr=/no> imagekey=re
    ports9i p_user_id= REMOTE_ADDR=10.10.105.54 SERVER_PROTOCOL=HTTP/1.1 authid=RWUser p_start_dt=30-JUN-2009= mode=bitmap REMOTE_HO
    ST=10.10.105.54 destype=cache SERVER_PORT=8890 p_sch_id=shashi= report="rp_os424_mat_recon.rdf=" expiredays=0 ACCEPT_LANGUAGE=en
    -us desformat=delimited p_agnt_cd=1492544= SCRIPT_NAME=/rwservlet rundebug=NO
    [2011/1/19 7:37:1:668] Debug 50103 (ServerManager:getServer): Found server class object
    [2011/1/19 7:37:1:669] Debug 50103 (ServerManager:getServer): ping server successfully
    [2011/1/19 7:37:1:669] Debug 50103 (ReportRunner:connectToServer): New Connection request for userid: RWUser to server: test
    [2011/1/19 7:37:1:673] Debug 50103 (ReportRunner:connectToServer): Connection succeeded for user: RWUser to server: test
    [2011/1/19 7:37:1:709] Info 51022 (ReportRunner:Release): Connection object has been released
    [2011/1/19 7:37:1:711] Exception 110 (): File 'rp_os424_mat_recon.rdf=' not found.
    REP-0110: Unable to open file 'rp_os424_mat_recon.rdf='.
    oracle.reports.RWException: IDL:oracle/reports/RWException:1.0
    at oracle.reports.RWExceptionHelper.read(RWExceptionHelper.java:67)
    at oracle.reports.server._ConnectionStub.runJob(_ConnectionStub.java:504)
    at oracle.reports.client.ReportRunner.dispatchReport(ReportRunner.java:288)
    at oracle.reports.rwclient.RWReportRunner.dispatchReport(RWReportRunner.java:86)
    at oracle.reports.rwclient.RWClient.runReport(RWClient.java:1671)
    at oracle.reports.rwclient.RWClient.processRequest(RWClient.java:1525)
    at oracle.reports.rwclient.RWClient.doGet(RWClient.java:366)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
    at oracle.security.jazn.oc4j.JAZNFilter.doFilter(Unknown Source)
    at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:663)
    at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:330)
    at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:830)
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:285)
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:126)
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
    at java.lang.Thread.run(Thread.java:534)
    [2011/1/19 7:37:1:711] Debug 50103 (RWClientUtility:isFromPortal): portal: null
    [2011/1/19 7:37:1:711] Debug 50103 (RWClientUtility:isFromPortal): webdbversion: null
    [2011/1/19 7:37:1:716] Debug 50103 (RWClientUtility:isStatusFormat): statusformat: null
    [2011/1/19 7:37:1:717] Debug 50103 (RWClientUtility:isStatusFormat): statusformat: null
    [2011/1/19 7:37:1:717] (RWClient:doGet) ...exit

    HI,
    From where can I get access of the Doc id 341188.1. Could u tell me the solution? I'm stuck with it for more than 2 weeks.
    Thanks in advance.
    Regards,
    Shashi Ranjan

  • Problem running reports with graphics in 11i

    Hi,
    I have developed some custom reports (using
    Reports 6i) with graphics charts embedded within them. I would like to display the output from within Oracle Applications 11i.
    There seem to be two approaches:
    1. Invoke the report from Oracle Self-Service using OracleOasis.runReport
    2. Register the report as a concurrent request (with HTML/PDF output) and run it using the concurrent manager
    Approach 1 requires the reports server cgi which I start using adrepctl.sh. Approach 2 requires the concurrent manager which I start using adcmctl.sh.
    The problems start to occur depending on how and from where I start these scripts. The exact problem occurs in both cases.
    If these scripts are started:
    1. From a regular telnet window from a windows NT box
    The reports error out with a REP-3000 internal toolkit error
    2. From an Exceed xterm session and I keep the Exceed session alive (I tried both TrueColors and PseudoColors settings)
    The reports work but there are problems with the output - pie colors do not appear (everything is white, for e.g.), etc.
    3. From the Sun Solaris console
    The reports work fine.
    The problem is that method 3 is not very convenient since every time I bring down the concurrent manager or reports cgi server, I need to walk to a different building (where the Sun boxes are) to start it.
    Method 2 above isn't particularly great either (even assuming I can get it to work) since I need to have an exceed session running all the time.
    Can some one offer suggestions to solve the problem I'm having? Even clues on why method 2 above is not working as expected would be greatly appreciated.
    Thanks,
    - NR

    Problem solved! As long as the xhost + is set on the host machine and some one is logged in, it appears that one can simply set the DISPLAY environment variable to point to the host (even from a simple telnet window) and start the reports server or concurrent manager. Looks like you also have to have REPORTS60_NO_DUMMY_PRINTER set to "YES".

  • EoS/EoL hardware report problem on LMS 3.2 RME 4.3.1

    Hi,
    Trying to run EoS/EoL RME reports for the first time and having problems. I have applied latest patch for CSCte717641 and this seems to have made things a little better. Originally the hardware report simply failed, but now it seems to run, but never finish. To avoid any download problems, I have manually downloaded both the EOX_SOFTWARE.ZIP and the PSIRT_EOX_OFFLINE.txt, which I have placed into the "NMSRoot\rme\jobs\inventory\reports\EOX_PSIRT\local_xml" folder. The PSIRT file has been un-compressed and put in as .txt and the EOX file has been left as a .zip. Now the report starts running, I can see it creating a temp folder in the above folder and it seems to place two files in there eos_card and eos_device, but then it appears to delete the temp folder and the job just sits at running?
    Any advice would be appreciated

    This is from the time I ran the report.
    [ Fri Feb 18 12:03:15 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.ui.action.InventoryReportsAction,perform,383,InventoryReportsAction Getting request params : ReportNAme: EoS/EoL Hardware ReportApp Name : null
    [ Fri Feb 18 12:03:15 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.ui.action.InventoryReportsAction,perform,392,Action of Filter is null
    [ Fri Feb 18 12:03:15 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.ui.action.InventoryReportsAction,perform,911,Generate report Request from UI
    [ Fri Feb 18 12:03:17 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.ui.action.InventoryReportsAction,perform,1320,Update user given cisco.com credentails
    [ Fri Feb 18 12:03:17 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.util.IRJobUtil,persistJob,201,new folder created for storing the job
    [ Fri Feb 18 12:03:18 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.custom.IRCrtmImpl,getCrtList,45,called getCrtList to get list of Inventory Custom Templates
    [ Fri Feb 18 12:03:18 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.custom.IRCrtmImpl,getCrtList,51,Connection is not null
    [ Fri Feb 18 12:03:18 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.custom.IRCrtmImpl,getCrtList,70,Number of templates returning: 2
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,,246,
    Starting the JOB 3972
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1506,
    Getting the job details from persisted Job
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1528,
    Job Details : EoS/EoL Hardware Report
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1530,
    Job is custom report : false
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1532,
    Job runtype : Immediate
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1534,
    Job date : 18-2-11 12:10
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1536,
    Job description : test99
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1538,
    Job E mail id :
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1540,
    Job publish location :
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1542,
    Job template id : 0
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1544,
    Job job id : 3972
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,populateJobData,1562,
    All the report properties read successfully from the job.
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.common.VerifyRMELicense,validate,61,sun.misc.Launcher$AppClassLoader@92e78c
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.common.VerifyRMELicense,validate,203,
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,runReport,294,
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,runReport,314,
    Valid License.
    Proceeding with job execution.
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,runReport,334,
    Running Report job 3972 instance id 0
    [ Fri Feb 18 12:03:19 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,runReport,354,inside devsel flow
    [ Fri Feb 18 12:03:27 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,runReport,558,normal3
    [ Fri Feb 18 12:03:28 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,runReport,600,successfully got predeployed devices
    [ Fri Feb 18 12:03:28 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,runReport,606,submitted.length3
    [ Fri Feb 18 12:03:29 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,generateReportData,1633,************before set device in gen rep data**********
    [ Fri Feb 18 12:03:29 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.inventory.reports.job.JobExecutor,generateReportData,1639,************after set device in gen rep data*******
    DEBUG,2011-02-18 12:03:32,250,Datagenerator class name is class com.cisco.nm.rmeng.inventory.reports.datagenerators.EOS_EOL_RDG
    DEBUG,2011-02-18 12:03:32,250,Datagenerator class instance is [email protected]107304
    [ Fri Feb 18 12:03:33 GMT 2011 ],INFO ,[main],com.cisco.nm.rmeng.util.db.DatabaseConnectionPool,getConnection,113,Inside ICSDatabaseConnection, MAX_COUNT =5
    [ Fri Feb 18 12:12:40 GMT 2011 ],ERROR,[main],com.cisco.nm.rmeng.inventory.reports.util.LocalXMLParser,getFileName,545,Here *****eox_card.xml
    [ Fri Feb 18 12:12:44 GMT 2011 ],ERROR,[main],com.cisco.nm.rmeng.inventory.reports.util.LocalXMLParser,getFileName,545,Here *****eox_device.xml
    NOTE:
    I can see both files in the NMSRoot\CSCOpx\files\rme\jobs\inventory\reports\EOX_PSIRT path, but not in the local_xml directory?
    Then nothing for an hour and then the following that I don't think id related?
    [ Fri Feb 18 13:18:58 GMT 2011 ],INFO ,[TP-Processor3],com.cisco.nm.rmeng.inventory.reports.ui.action.IRJobsAction,getArchiveId,387,Entering the method
    [ Fri Feb 18 13:18:59 GMT 2011 ],INFO ,[TP-Processor3],com.cisco.nm.rmeng.inventory.reports.datagenerators.SystemReports,goForPDFReport,308,Device Limit is = 750
    [ Fri Feb 18 13:18:59 GMT 2011 ],INFO ,[TP-Processor3],com.cisco.nm.rmeng.inventory.reports.datagenerators.SystemReports,goForPDFReport,309,Device Limit for Device Statistics Report is = 750
    INFO ,2011-02-18 13:18:59,281,export device list from request [Lcom.cisco.nm.rmeng.util.datastructures.DeviceID;@1db810a
    [ Fri Feb 18 14:16:17 GMT 2011 ],INFO ,[TP-Processor5],com.cisco.nm.rmeng.common.VerifyRMELicense,validate,61,WebappClassLoader
    delegate: false
    repositories:
    /WEB-INF/classes/
    ----------> Parent Classloader:
    org.apache.catalina.loader.StandardClassLoader@1a06e38
    [ Fri Feb 18 14:16:17 GMT 2011 ],INFO ,[TP-Processor5],com.cisco.nm.rmeng.common.VerifyRMELicense,validate,126,INFO: Resource Limit from License file=10000
    [ Fri Feb 18 14:16:17 GMT 2011 ],INFO ,[TP-Processor5],com.cisco.nm.rmeng.common.VerifyRMELicense,validate,203,
    [ Fri Feb 18 14:20:00 GMT 2011 ],INFO ,[TP-Processor16],com.cisco.nm.rmeng.common.VerifyRMELicense,validate,61,WebappClassLoader
    delegate: false
    repositories:
    /WEB-INF/classes/
    ----------> Parent Classloader:
    org.apache.catalina.loader.StandardClassLoader@1a06e38
    [ Fri Feb 18 14:20:00 GMT 2011 ],INFO ,[TP-Processor16],com.cisco.nm.rmeng.common.VerifyRMELicense,validate,126,INFO: Resource Limit from License file=10000
    [ Fri Feb 18 14:20:00 GMT 2011 ],INFO ,[TP-Processor16],com.cisco.nm.rmeng.common.VerifyRMELicense,validate,203,
    [ Fri Feb 18 14:23:03 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.custom.IRCrtmImpl,getCrtList,45,called getCrtList to get list of Inventory Custom Templates
    [ Fri Feb 18 14:23:04 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.custom.IRCrtmImpl,getCrtList,51,Connection is not null
    [ Fri Feb 18 14:23:04 GMT 2011 ],INFO ,[TP-Processor9],com.cisco.nm.rmeng.inventory.reports.custom.IRCrtmImpl,getCrtList,70,Number of templates returning: 2
    at that point I cancelled the job as it had been running for two hours for 5 devices.

  • REP-52007 Error and Web Parameter Form Format Problems

    I am attemting to get Oracle 9i reports working. I created a super simple report just for test purposes. I am using the following URL to call it directly from the browser:
    http://myserver.com:8008/reports/rwservlet?server=repapp&report=jtest_rep.rdf&userid=myuser/mypass@mydb&DESTYPE=cache&DESFORMAT=pdf&PARAMFORM=YES
    When it generates the parameter form page, the formatting of the section that has the paramters is terrible. Looking at the HTML generated, it is creating a large <table> that places the elements outside of the viewing area. I do not know how why it is doing this or how to fix it.
    If I actually do find the field and enter in the prameter and hit submit, I then get:
    REP-52007: Parameter form format error.
    java.lang.IllegalStateException: Response is already committed!     at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.EvermindHttpServletResponse.setContentType(EvermindHttpServletResponse.java:973)     at javax.servlet.ServletResponseWrapper.setContentType(ServletResponseWrapper.java:27)     at oracle.reports.rwclient.RWReportRunner.setContentType(RWReportRunner.java:261)     at oracle.reports.rwclient.RWReportRunner.getMainFile(RWReportRunner.java:135)     at oracle.reports.rwclient.RWReportRunner.getMainFile(RWReportRunner.java:95)     at oracle.reports.rwclient.RWClient.runReport(RWClient.java:1312)     at oracle.reports.rwclient.RWClient.processRequest(RWClient.java:1129)     at oracle.reports.rwclient.RWClient.doPost(RWClient.java:318)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:283)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:336)     at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:59)     at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:283)     at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:523)     at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:269)     at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:735)     at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.AJPRequestHandler.run(AJPRequestHandler.java:151)     at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].util.ThreadPoolThread.run(ThreadPoolThread.java:64)
    If I set paramform=no and pass in the parmater in the url string, then it skips the paramter form and runs fine accepting the input.
    Any idea what the solution is for these two errors?

    After more searching, I found out that the problem for both is an Oracle Bug posted on mealink. It has to do with using capital letters for the oracle default parameters. Once you make it lower case, it works.
    ex:
    http://myserver.com:8008/reports/rwservlet?server=repapp&report=myreport.rdf&userid=myid/mypass@mydb&destype=cache&desformat=pdf&paramform=yes

  • Problems with actionListeners on CardLayout...Help Please

    I'm having a problem with my clear button on card2 in my code. When pressed it will not clear the data, and I don't see anything wrong with the code. Am I overlooking something? Please take a look at the long code I have posted and let me know what is going on with this if you could.
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.text.*;
    public class BankGUI implements ItemListener
         JPanel cards;
         final String main = "Main menu";
         final String addCust = "Add a new customer";
         final String upCust = "Change a current customer's information";
         final String addAcct = "Add a new account";
         final String withdrawl = "Withdrawl monies from an account";
         final String deposit = "Deposit monies into an account";
         final String report = "Run report to show all accounts";
         JComboBox cb;
         JRadioButton savings, checking;
         JCheckBox yes, no;
         JLabel firstNameLabel, lastNameLabel, addressLabel, cityLabel, stateLabel,
              phoneLabel, customerNumbLabel, accountNumbLabel, depositLabel,
              accountTypeLabel, savingsProLabel, balanceLabel, withdrawlLabel;
         JTextField firstNameField, lastNameField, addressField, cityField,
              stateField, phoneField, customerNumbField, accountNumbField,
              depositField, accountTypeField, balanceField, withdrawlField;
         JButton submit1, submit3, submit4, submit5, submit6, clear, logoff, run, find,
               delete, update, runReport;
         JFrame f;
         String firstName;
         String lastName;
         String address;
         String city;
         String state;
         String phoneNumber;
         String customerNumber;
         Controller cont;
         Customer cust;
         public void addComponent(Container pane)
              JPanel comboBoxPane = new JPanel();
              String comboBoxItems[] = {main, addCust, upCust, addAcct,
                   withdrawl, deposit, report};
              JComboBox cb = new JComboBox(comboBoxItems);
              cb.setEditable(false);
              cb.addItemListener(this);
              comboBoxPane.add(cb);
              JPanel card1 = new JPanel(); //main menu
              logoff = new JButton("Logoff");
              logoff.addActionListener(new ActionListener()
                   public void actionPerformed(ActionEvent l)
                        cont = new Controller();
                        cont.wrapUp();
              card1.add(logoff); //end main menu
              JPanel card2 = new JPanel(new GridLayout(0,4,1,1)); //add customer
              firstNameLabel = new JLabel("First Name:", SwingConstants.RIGHT);
              card2.add(firstNameLabel);
              firstNameField = new JTextField("", 10);
              card2.add(firstNameField);
              lastNameLabel = new JLabel("Last Name:", SwingConstants.RIGHT);
              card2.add(lastNameLabel);
              lastNameField = new JTextField("", 10);
              card2.add(lastNameField);
              addressLabel = new JLabel("Address:", SwingConstants.RIGHT);
              card2.add(addressLabel);
              addressField = new JTextField("", 10);
              card2.add(addressField);
              cityLabel = new JLabel("City:", SwingConstants.RIGHT);
              card2.add(cityLabel);
              cityField = new JTextField("", 10);
              card2.add(cityField);
              stateLabel = new JLabel("State:", SwingConstants.RIGHT);
              card2.add(stateLabel);
              stateField = new JTextField("", 10);
              card2.add(stateField);
              phoneLabel = new JLabel("Phone Number:", SwingConstants.RIGHT);
              card2.add(phoneLabel);
              phoneField = new JTextField("", 10);
              card2.add(phoneField);
              customerNumbLabel = new JLabel("Customer Number (SSN):", SwingConstants.RIGHT);
              card2.add(customerNumbLabel);
              customerNumbField = new JTextField("", 10);
              card2.add(customerNumbField);
              card2.add(new JLabel(""));
              card2.add(new JLabel(""));
              card2.add(new JLabel(""));
              submit1 = new JButton("Submit");
              /*submit1.addActionListener(new ActionListener()
                   public void actionPerformed(ActionEvent s1)
                        firstName = firstNameField.getText();
                        lastName = lastNameField.getText();
                        address = addressField.getText();
                        city = cityField.getText();
                        state = stateField.getText();
                        phoneNumber = phoneField.getText();
                        customerNumber = customerNumbField.getText();
                        Customer cust = new Customer(firstName, lastName, address, city, state, phoneNumber, customerNumber);
                        System.out.println(cust.getFirstName());
              card2.add(submit1);
              clear = new JButton("Clear");
              clear.addActionListener(new ActionListener()
                   public void actionPerformed(ActionEvent c)
                        firstNameField.setText("");
                        lastNameField.setText("");
                        addressField.setText("");
                        cityField.setText("");
                        stateField.setText("");
                        phoneField.setText("");
                        customerNumbField.setText("");
                        firstNameField.requestFocus();
              card2.add(clear); //end add customer
              JPanel card3 = new JPanel(new GridLayout(0,4,1,1)); //update customer
              card3.add(new JLabel(""));
              customerNumbLabel = new JLabel("Customer Number (SSN):", SwingConstants.RIGHT);
              card3.add(customerNumbLabel);
              customerNumbField = new JTextField("", 10);
              card3.add(customerNumbField);
              card3.add(new JLabel(""));
              card3.add(new JLabel(""));
              card3.add(new JLabel(""));
              find = new JButton("Find");
              card3.add(find);
              card3.add(new JLabel(""));
              card3.add(new JLabel(""));
              card3.add(new JLabel(""));
              card3.add(new JLabel(""));
              card3.add(new JLabel(""));
              firstNameLabel = new JLabel("First Name:", SwingConstants.RIGHT);
              card3.add(firstNameLabel);
              firstNameField = new JTextField("", 10);
              card3.add(firstNameField);
              lastNameLabel = new JLabel("Last Name:", SwingConstants.RIGHT);
              card3.add(lastNameLabel);
              lastNameField = new JTextField("", 10);
              card3.add(lastNameField);
              addressLabel = new JLabel("Address:", SwingConstants.RIGHT);
              card3.add(addressLabel);
              addressField = new JTextField("", 10);
              card3.add(addressField);
              cityLabel = new JLabel("City:", SwingConstants.RIGHT);
              card3.add(cityLabel);
              cityField = new JTextField("", 10);
              card3.add(cityField);
              stateLabel = new JLabel("State:", SwingConstants.RIGHT);
              card3.add(stateLabel);
              stateField = new JTextField("", 10);
              card3.add(stateField);
              phoneLabel = new JLabel("Phone Number:", SwingConstants.RIGHT);
              card3.add(phoneLabel);
              phoneField = new JTextField("", 10);
              card3.add(phoneField);
              card3.add(new JLabel(""));
              submit3 = new JButton("Save Changes");
              card3.add(submit3); //end update customer
              JPanel card4 = new JPanel(new GridLayout(0,4,1,1)); //add account
              customerNumbLabel = new JLabel("Customer Number (SSN):", SwingConstants.RIGHT);
              card4.add(customerNumbLabel);
              customerNumbField = new JTextField("", 10);
              card4.add(customerNumbField);
              card4.add(new JLabel(""));
              card4.add(new JLabel(""));
              accountNumbLabel = new JLabel("Account Number:", SwingConstants.RIGHT);
              card4.add(accountNumbLabel);
              accountNumbField = new JTextField("", 10);
              card4.add(accountNumbField);
              card4.add(new JLabel(""));
              card4.add(new JLabel(""));
              accountTypeLabel = new JLabel("Account Type:", SwingConstants.RIGHT);
              card4.add(accountTypeLabel);
              savings = new JRadioButton("Savings");
              card4.add(savings);
              checking = new JRadioButton("Checking");
              card4.add(checking);
              card4.add(new JLabel(""));
              depositLabel = new JLabel("Deposit Amount:", SwingConstants.RIGHT);
              card4.add(depositLabel);
              depositField = new JTextField("", 10);
              card4.add(depositField);
              card4.add(new JLabel(""));
              card4.add(new JLabel(""));
              submit4 = new JButton("Submit");
              card4.add(submit4);//end add account
              JPanel card5 = new JPanel(new GridLayout(0,4,1,1)); //withdrawl
              accountNumbLabel = new JLabel("Account Number:", SwingConstants.RIGHT);
              card5.add(accountNumbLabel);
              accountNumbField = new JTextField("", 10);
              card5.add(accountNumbField);
              card5.add(new JLabel(""));
              card5.add(new JLabel(""));
              withdrawlLabel = new JLabel("Withdrawl Amount:", SwingConstants.RIGHT);
              card5.add(withdrawlLabel);
              withdrawlField = new JTextField("", 10);
              card5.add(withdrawlField);
              card5.add(new JLabel(""));
              card5.add(new JLabel(""));
              submit5 = new JButton("Submit");
              card5.add(submit5);//end withdrawl
              JPanel card6 = new JPanel(new GridLayout(0,4,1,1)); //deposit
              accountNumbLabel = new JLabel("Account Number:", SwingConstants.RIGHT);
              card6.add(accountNumbLabel);
              accountNumbField = new JTextField("", 10);
              card6.add(accountNumbField);
              card6.add(new JLabel(""));
              card6.add(new JLabel(""));
              depositLabel = new JLabel("Deposit Amount:", SwingConstants.RIGHT);
              card6.add(depositLabel);
              depositField = new JTextField("", 10);
              card6.add(depositField);
              card6.add(new JLabel(""));
              card6.add(new JLabel(""));
              submit6 = new JButton("Submit");
              card6.add(submit6);//end deposit
              JPanel card7 = new JPanel(); //run report
              card7.add(new JLabel(""));
              runReport = new JButton("Run Report");
              card7.add(runReport);//end report
              cards = new JPanel(new CardLayout());
              cards.add(card1, main);
              cards.add(card2, addCust);
              cards.add(card3, upCust);
              cards.add(card4, addAcct);
              cards.add(card5, withdrawl);
              cards.add(card6, deposit);
              cards.add(card7, report);
              pane.add(comboBoxPane, BorderLayout.PAGE_START);
              pane.add(cards);
         public void itemStateChanged(ItemEvent evt)
              CardLayout cl = (CardLayout)(cards.getLayout());
              cl.show(cards, (String)evt.getItem());
         public void createGUI()
              f = new JFrame("Bank of Sean");
              f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              BankGUI bankGUI = new BankGUI();
              bankGUI.addComponent(f.getContentPane());
              f.pack();
              f.setVisible(true);
         public static void main(String[] args)
              javax.swing.SwingUtilities.invokeLater(new Runnable()
                   public void run()
                        BankGUI bankGUI = new BankGUI();
                        bankGUI.createGUI();
    }

    You have a generic problem that is illustrated by looking at your 'firstNameField'. You define just one 'firstNameField' variable and then allocated a value several times so that the content of 'firstNameField' add to card2 using
    card2.add(firstNameField);
    does not refer to the same object as is used in your action listener
    firstNameField.setText("");
    because in your card3 section you overwrite the original content ot the reference.
    You can fix this by sharing a Document e.g.
    Document doc = firstNameField.getDocument();
    firstNameField = new JTextField(doc, "", 10);
    card3.add(firstNameField);
    for each time a new field is reqired.

  • A problem with threads

    I am trying to implement some kind of a server listening for requests. The listener part of the app, is a daemon thread that listens for connections and instantiates a handling daemon thread once it gets some. However, my problem is that i must be able to kill the listening thread at the user's will (say via a sto button). I have done this via the Sun's proposed way, by testing a boolean flag in the loop, which is set to false when i wish to kill the thread. The problem with this thing is the following...
    Once the thread starts excecuting, it will test the flag, find it true and enter the loop. At some point it will LOCK on the server socket waiting for connection. Unless some client actually connects, it will keep on listening indefinatelly whithought ever bothering to check for the flag again (no matter how many times you set the damn thing to false).
    My question is this: Is there any real, non-theoretical, applied way to stop thread in java safely?
    Thank you in advance,
    Lefty

    This was one solution from the socket programming forum, have you tried this??
    public Thread MyThread extends Thread{
         boolean active = true;          
         public void run(){
              ss.setSoTimeout(90);               
              while (active){                   
                   try{                       
                        serverSocket = ss.accept();
                   catch (SocketTimeoutException ste){
                   // do nothing                   
         // interrupt thread           
         public void deactivate(){               
              active = false;
              // you gotta sleep for a time longer than the               
              // accept() timeout to make sure that timeout is finished.               
              try{
                   sleep(91);               
              }catch (InterruptedException ie){            
              interrupt();
    }

  • A problem with Threads and MMapi

    I am tring to execute a class based on Game canvas.
    The problem begin when I try to Play both a MIDI tone and to run an infinit Thread loop.
    The MIDI tone "Stammers".
    How to over come the problem?
    Thanks in advance
    Kobi
    See Code example below:
    import java.io.IOException;
    import java.io.InputStream;
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.Image;
    import javax.microedition.lcdui.game.GameCanvas;
    import javax.microedition.media.Manager;
    import javax.microedition.media.MediaException;
    import javax.microedition.media.Player;
    public class MainScreenCanvas extends GameCanvas implements Runnable {
         private MainMIDlet parent;
         private boolean mTrucking = false;
         Image imgBackgound = null;
         int imgBackgoundX = 0, imgBackgoundY = 0;
         Player player;
         public MainScreenCanvas(MainMIDlet parent)
              super(true);
              this.parent = parent;
              try
                   imgBackgound = Image.createImage("/images/area03_bkg0.png");
                   imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
                   imgBackgoundY = this.getHeight() - imgBackgound.getHeight();
              catch(Exception e)
                   System.out.println(e.getMessage());
          * starts thread
         public void start()
              mTrucking = true;
              Thread t = new Thread(this);
              t.start();
          * stops thread
         public void stop()
              mTrucking = false;
         public void play()
              try
                   InputStream is = getClass().getResourceAsStream("/sounds/scale.mid");
                   player = Manager.createPlayer(is, "audio/midi");
                   player.setLoopCount(-1);
                   player.prefetch();
                   player.start();
              catch(Exception e)
                   System.out.println(e.getMessage());
         public void run()
              Graphics g = getGraphics();
              play();
              while (true)
                   tick();
                   input();
                   render(g);
          * responsible for object movements
         private void tick()
          * response to key input
         private void input()
              int keyStates = getKeyStates();
              if ((keyStates & LEFT_PRESSED) != 0)
                   imgBackgoundX++;
                   if (imgBackgoundX > 0)
                        imgBackgoundX = 0;
              if ((keyStates & RIGHT_PRESSED) != 0)
                   imgBackgoundX--;
                   if (imgBackgoundX < this.getWidth() - imgBackgound.getWidth())
                        imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
          * Responsible for the drawing
          * @param g
         private void render(Graphics g)
              g.drawImage(imgBackgound, imgBackgoundX, imgBackgoundY, Graphics.TOP | Graphics.LEFT);
              this.flushGraphics();
    }

    You can also try to provide a greater Priority to your player thread so that it gains the CPU time when ever it needs it and don't harm the playback.
    However a loop in a Thread and that to an infinite loop is one kind of very bad programming, 'cuz the loop eats up most of your CPU time which in turn adds up more delays of the execution of other tasks (just as in your case it is the playback). By witting codes bit efficiently and planning out the architectural execution flow of the app before start writing the code helps solve these kind of issues.
    You can go through [this simple tutorial|http://oreilly.com/catalog/expjava/excerpt/index.html] about Basics of Java and Threads to know more about threads.
    Regds,
    SD
    N.B. And yes there are more articles and tutorials available but much of them targets the Java SE / EE, but if you want to read them here is [another great one straight from SUN|http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html] .
    Edited by: find_suvro@SDN on 7 Nov, 2008 12:00 PM

  • J2ME problem with threads

    Hi all,
    I would like to ask you for a help. I need to write a small program at my university. I started to write a midlet which function would be to countdown time for sports activities. I woul like to start a new thread - the one that counts down - and at the same time make the main thread sleep. After the "countdown" thread finishes, the main thread wakes up and waits for user input. The problem is that when the "countdown" thread finishes his work, I've got Uncaught exception java/lang/NullPointerException. error and the midlet halts.
    Below you can find the code
    import java.lang.*;
    import java.util.*;
    import javax.microedition.lcdui.*;
    import javax.microedition.midlet.*;
    public class intervals extends MIDlet implements CommandListener
    public Display ekran;
    private SweepCanvas sweeper;
    private Form rundy;
    private TextField round0, round1, round2, round3, round4, round5, round6, round7, round8;
    private long czas,x;
    private Command exitCommand;
    private Command addRound;
    private Command delRound;
    private Command start;
    private TextField repeat;
    private Form odliczanie;
    private Alert ostrz;
    Licznik thread;
    String test;
    StringItem test1;
    int parz,i,j,k;
    static int l;
    int ilrund;
    int ilpowt;
    Item sec;
    long sec1;
    public intervals()
        rundy = new Form("Interwa&#322;y sportowe");
        exitCommand = new Command("Wyj&#347;cie", Command.EXIT, 2);
        addRound = new Command("Dodaj","Dodaj rund&#281;", Command.ITEM,1);
        delRound = new Command("Usu&#324;","Usu&#324; ostatni&#261; rund&#281;", Command.ITEM,1);
        start = new Command("Start", Command.ITEM,1);
        odliczanie = new Form("Odliczanie");
        TextField dodaj(TextField kolej)
            kolej=new TextField("Podaj czas (s) rundy "+parz,null, 4, TextField.NUMERIC);//stworzenie nowej instancji do wybierania czasu trwania rundy
            if(rundy.size()==0)
                rundy.insert(rundy.size(),kolej);
                else
                    rundy.insert(rundy.size()-1, kolej);
            return kolej;
        void odliczanie(TextField round)
            monitor m=new monitor();
            k=Integer.parseInt(round.getString());
            ekran.setCurrent(odliczanie);
            thread=new Licznik(k,odliczanie);
            thread.start();
            ekran.setCurrent(rundy);
    public void startApp()// throws MIDletStateChangeException
        rundy.deleteAll();
        repeat = new TextField("Podaj ilo&#347;&#263; powtórze&#324;",null,1,TextField.NUMERIC);
        rundy.addCommand(addRound);
        rundy.addCommand(exitCommand);
        rundy.setCommandListener(this);
        Canvas obrazek = new MyCanvas();
        ekran = Display.getDisplay(this);
        ekran.setCurrent(obrazek);
        czas=System.currentTimeMillis();
        while (System.currentTimeMillis()<czas+1000)
            continue;
        ekran.setCurrent(rundy);
    public void pauseApp()
    public void destroyApp(boolean unconditional)
        notifyDestroyed();
    public void commandAction(Command c, Displayable s)
        if (c == exitCommand)
            destroyApp(false);
            notifyDestroyed();
        else if(c==addRound)
            if(rundy.size()==0)//Sprawdzenie ilo&#347;ci elementów w celu poprawnego wy&#347;wietlania liczby rund w formie
                parz=1;
                else
                parz=rundy.size();
            switch(parz)
                case 1:
                    round0=dodaj(round0);break;
                case 2:
                    round1=dodaj(round1);break;
                case 3:
                   round2= dodaj(round2);break;
                case 4:
                    round3=dodaj(round3);break;
                case 5:
                    round4=dodaj(round4);break;
                default:
                    ostrz=new Alert("Uwaga","Maksymalna liczba rund wynosi 9", null, AlertType.INFO);
                    ostrz.setTimeout(3000);
                    ekran.setCurrent(ostrz);
            if(rundy.size()==1)
                rundy.append(repeat);
                rundy.addCommand(start);
            rundy.addCommand(delRound);
        else if(c==delRound)
            if(rundy.size()!=0)
                rundy.delete(rundy.size()-2);
                if (rundy.size()==1)
                    rundy.deleteAll();
                if(rundy.size()==0)
                    rundy.removeCommand(delRound);
                    rundy.removeCommand(start);
        else if(c==start)
            ilrund=rundy.size()-1;
            if(this.repeat.size()>0)
                ilpowt=Integer.parseInt(this.repeat.getString());
            ekran = Display.getDisplay(this);
            for (i=1; i<=ilpowt;i++)
                odliczanie= new Form("Odliczanie");
                 for (j=0;j<ilrund;j++)
                    switch(j)
                         case 0:
                             odliczanie(round0);
                             break;
                         case 1:
                             odliczanie(round1);
                             break;
                         case 2:
                             odliczanie(round2);
                             break;
                         case 3:
                             odliczanie(round3);
                             break;
                         case 4:
                             odliczanie(round4);
                             break;
                         case 5:
                             odliczanie(round5);
                             break;
                         case 6:
                             odliczanie(round6);
                             break;
                         case 7:
                             odliczanie(round7);
                             break;
                         case 8:
                             odliczanie(round8);
                             break;
    class Licznik extends Thread
        int czas1,k;
        Form forma;
        monitor m;
        public Licznik(int k,Form formap)
            czas1=k;
            forma=formap;
        public synchronized void run()
            while(czas1>0)
                forma.deleteAll();
                forma.append("Czas pozosta&#322;y (s): "+czas1);
                try{Thread.sleep(1000);} catch(InterruptedException e){e.printStackTrace();}
                czas1--;
            if(czas1<=0)
                m.put();
        }and monitor class
    public class monitor
    boolean busy=false;
    synchronized void get()
        if(!busy)
            try
                wait();
            }catch(InterruptedException e){e.printStackTrace();}
        notify();
    synchronized void put()
        if(busy)
            try
            wait();
            }catch(InterruptedException e){e.printStackTrace();}
        busy=true;
        notify();
    }Can anybody help me with this?

    Groovemaker,
    Your Licznik class has a member m of type monitor, which has not been instantiated (in other words is null) hence, when calling m.put() you get NullPointerException. Please also mind, that using Thread.sleep(1000) is not an accurate way of measuring time.
    If I may, please use recommended for Java class naming conventions - some of your names use lower case, while other don't which is confusing to the reader.
    Daniel

  • Problem with threads within applet

    Hello,
    I got an applet, inside this applet I have a singleton, inside this singleton I have a thread.
    this thread is running in endless loop.
    he is doing something and go to sleep on and on.
    the problem is,
    when I refresh my IE6 browser I see more than 1 thread.
    for debug matter, I did the following things:
    inside the thread, sysout every time he goes to sleep.
    sysout in the singleton constructor.
    sysout in the singleton destructor.
    the output goes like this:
    when refresh the page, the singleton constructor loading but not every refresh, sometimes I see the constructor output and sometimes I dont.
    The thread inside the singleton is giving me the same output, sometime I see more than one thread at a time and sometimes I dont.
    The destructor never works (no output there).
    I don't understand what is going on.
    someone can please shed some light?
    thanks.
    btw. I am working with JRE 1.1
    this is very old and big applet and I can't convert it to something new.

    Ooops. sorry!
    I did.
         public void start() {
         public void stop() {
         public void destroy() {
              try {
                   resetAll();
                   Configuration.closeConnection();
                   QuoteItem.closeConnection();
              } finally {
                   try {
                        super.finalize();
                   } catch (Throwable e) {
                        e.printStackTrace();
         }

  • Problem with Threads and a static variable

    I have a problem with the code below. I am yet to make sure that I understand the problem. Correct me if I am wrong please.
    Code functionality:
    A timer calls SetState every second. It sets the state and sets boolean variable "changed" to true. Then notifies a main process thread to check if the state changed to send a message.
    The problem as far I understand is:
    Assume the timer Thread calls SetState twice before the main process Thread runs. As a result, "changed" is set to true twice. However, since the main process is blocked twice during the two calls to SetState, when it runs it would have the two SetState timer threads blocked on its synchronized body. It will pass the first one, send the message and set "changed" to false since it was true. Now, it will pass the second thread, but here is the problem, "changed" is already set to false. As a result, it won't send the message even though it is supposed to.
    Would you please let me know if my understanding is correct? If so, what would you propose to resolve the problem? Should I call wait some other or should I notify in a different way?
    Thanks,
    B.D.
    Code:
    private static volatile boolean bChanged = false;
    private static Thread objMainProcess;
       protected static void Init(){
            objMainProcess = new Thread() {
                public void run() {
                    while( objMainProcess == Thread.currentThread() ) {
                       GetState();
            objMainProcess.setDaemon( true );
            objMainProcess.start();
        public static void initStatusTimer(){
            if(objTimer == null)
                 objTimer = new javax.swing.Timer( 1000, new java.awt.event.ActionListener(){
                    public void actionPerformed( java.awt.event.ActionEvent evt){
                              SetState();
        private static void SetState(){
            if( objMainProcess == null ) return;
            synchronized( objMainProcess ) {
                bChanged = true;
                try{
                    objMainProcess.notify();
                }catch( IllegalMonitorStateException e ) {}
        private static boolean GetState() {
            if( objMainProcess == null ) return false;
            synchronized( objMainProcess ) {
                if( bChanged) {
                    SendMessage();
                    bChanged = false;
                    return true;
                try {
                    objMainProcess.wait();
                }catch( InterruptedException e ) {}
                return false;
        }

    Thanks DrClap for your reply. Everything you said is right. It is not easy to make them alternate since SetState() could be called from different places where the state could be anything else but a status message. Like a GREETING message for example. It is a handshaking message but not a status message.
    Again as you said, There is a reason I can't call sendMessage() inside setState().
    The only way I was able to do it is by having a counter of the number of notifies that have been called. Every time notify() is called a counter is incremented. Now instead of just checking if "changed" flag is true, I also check if notify counter is greater than zero. If both true, I send the message. If "changed" flag is false, I check again if the notify counter is greater than zero, I send the message. This way it works, but it is kind of a patch than a good design fix. I am yet to find a good solution.
    Thanks,
    B.D.

  • Problem with threads running javaw

    Hi,
    Having a problem with multi thread programming using client server sockets. The program works find when starting the the application in a console using java muti.java , but when using javaw multi.java the program doesnt die and have to kill it in the task manager. The program doesnt display any of my gui error messages either when the server disconnect the client. all works find in a console. any advice on this as I havent been able to understand why this is happening? any comment would be appreciated.
    troy.

    troy,
    Try and post a minimum code sample of your app which
    does not work.
    When using javaw, make sure you redirect the standard
    error and standard output streams to file.
    Graeme.Hi Graeme,
    I dont understand what you mean by redirection to file? some of my code below.
    The code works fine under a console, code is supposed to exit when the client (the other server )disconnects. the problem is that but the clientworker side of the code still works. which under console it doesnt.
    public class Server{
    ServerSocket aServerSocket;
    Socket dianosticsSocket;
    Socket nPortExpress;
    ClientListener aClientListener;
    LinkedList queue = new LinkedList();
    int port = 0;
    int clientPort = 0;
    String clientName = null;
    boolean serverAlive = true;
    * Server constructor generates a server
    * Socket and then starts a client threads.
    * @param aPort      socket port of local machine.
    public Server(int aPort, String aClientName, int aClientPort){
    port = aPort;
    clientName = aClientName;
    clientPort = aClientPort;
    try{
    // create a new thread
    aServerSocket = new ServerSocket(port) ;
    // connect to the nPortExpress
    aClientListener = new ClientListener(InetAddress.getByName(clientName), clientPort, queue,this);
    // aClientListener.setDaemon(true);
    aClientListener.start();
    // start a dianostic port
    DiagnosticsServer aDiagnosticsServer = new DiagnosticsServer(port,queue,aClientListener);
    // System.out.println("Server is running on port " + port + "...");
    // System.out.println("Connect to nPort");
    catch(Exception e)
    // System.out.println("ERROR: Server port " + port + " not available");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Server port " + port + " not available", JOptionPane.ERROR_MESSAGE);
    serverAlive = false;
    System.exit(1);
    while(serverAlive&&aClientListener.hostSocket.isConnected()){
    try{
    // connect the client
    Socket aClient = aServerSocket.accept();
    //System.out.println("open client connection");
    //System.out.println("client local: "+ aClient.getLocalAddress().toString());
    // System.out.println("client localport: "+ aClient.getLocalPort());
    // System.out.println("client : "+ aClient.getInetAddress().toString());
    // System.out.println("client port: "+ aClient.getLocalPort());
    // make a new client thread
    ClientWorker clientThread = new ClientWorker(aClient, queue, aClientListener, false);
    // start thread
    clientThread.start();
    catch(Exception e)
    //System.out.println("ERROR: Client connection failure");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Client connection failure", JOptionPane.ERROR_MESSAGE);
    }// end while
    } // end constructor Server
    void serverExit(){
         JOptionPane.showMessageDialog(null, "Server ","ERROR: nPort Failure", JOptionPane.ERROR_MESSAGE);
         System.exit(1);
    }// end class Server
    *** connect to another server
    public class ClientListener extends Thread{
    InetAddress hostName;
    int hostPort;
    Socket hostSocket;
    BufferedReader in;
    PrintWriter out;
    boolean loggedIn;
    LinkedList queue;      // reference to Server queue
    Server serverRef; // reference to main server
    * ClientListener connects to the host server.
    * @param aHostName is the name of the host eg server name or IP address.
    * @param aHostPort is a port number of the host.
    * @param aLoginName is the users login name.
    public ClientListener(InetAddress aHostName, int aHostPort,LinkedList aQueue,Server aServer)      // reference to Server queue)
    hostName = aHostName;
    hostPort = aHostPort;
    queue = aQueue;
    serverRef = aServer;      
    // connect to the server
    try{
    hostSocket = new Socket(hostName, hostPort);
    catch(IOException e){
    //System.out.println("ERROR: Connection Host Failed");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Connection to nPort Failed", JOptionPane.ERROR_MESSAGE);     
    System.exit(0);
    } // end constructor ClientListener
    ** multi client connection server
    ClientWorker(Socket aSocket,LinkedList aQueue, ClientListener aClientListener, boolean diagnostics){
    queue = aQueue;
    addToQueue(this);
    client = aSocket;
    clientRef = aClientListener;
    aDiagnostic = diagnostics;
    } // end constructor ClientWorker
    * run method is the main loop of the server program
    * in change of handle new client connection as well
    * as handle all messages and errors.
    public void run(){
    boolean alive = true;
    String aSubString = "";
    in = null;
    out = null;
    loginName = "";
    loggedIn = false;
    while (alive && client.isConnected()&& clientRef.hostSocket.isConnected()){
    try{
    in = new BufferedReader(new InputStreamReader(client.getInputStream()));
    out = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
    if(aDiagnostic){
    out.println("WELCOME to diagnostics");
    broadCastDia("Connect : diagnostics "+client.getInetAddress().toString());
    out.flush();
    else {       
    out.println("WELCOME to Troy's Server");
    broadCastDia("Connect : client "+client.getInetAddress().toString());
         out.flush();
    String line;
    while(((line = in.readLine())!= null)){
    StringTokenizer aStringToken = new StringTokenizer(line, " ");
    if(!aDiagnostic){
    broadCastDia(line);
    clientRef.sendMessage(line); // send mesage out to netExpress
    out.println(line);
    out.flush();
    else{
    if(line.equals("GETIPS"))
    getIPs();
    else{
    clientRef.sendMessage(line); // send mesage out to netExpress
    out.println(line);
    out.flush();
    } // end while
    catch(Exception e){
    // System.out.println("ERROR:Client Connection reset");
                             JOptionPane.showMessageDialog(null, (e.toString()),"ERROR:Client Connection reset", JOptionPane.ERROR_MESSAGE);     
    try{
    if(aDiagnostic){
    broadCastDia("Disconnect : diagnostics "+client.getInetAddress().toString());
    out.flush();
    else {       
    broadCastDia("Disconnect : client "+client.getInetAddress().toString());
         out.flush();
    // close the buffers and connection;
    in.close();
    out.close();
    client.close();
    // System.out.println("out");
    // remove from list
    removeThreadQueue(this);
    alive = false;
    catch(Exception e){
    // System.out.println("ERROR: Client Connection reset failure");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Client Connection reset failure", JOptionPane.ERROR_MESSAGE);     
    }// end while
    } // end method run
    * method run - Generates io stream for communicating with the server and
    * starts the client gui. Run also parses the input commands from the server.
    public void run(){
    boolean alive = true;
    try{
    // begin to life the gui
    // aGuiClient = new ClientGui(hostName.getHostName(), hostPort, loginName, this);
    // aGuiClient.show();
    in = new BufferedReader(new InputStreamReader(hostSocket.getInputStream()));
    out = new PrintWriter(new OutputStreamWriter(hostSocket.getOutputStream()));
    while (alive && hostSocket.isConnected()){
    String line;
    while(((line = in.readLine())!= null)){
    System.out.println(line);
    broadCast(line);
    } // end while
    } // end while
    catch(Exception e){
    //     System.out.println("ERRORa Connection to host reset");
    JOptionPane.showMessageDialog(null, (e.toString()),"ERROR: Connection to nPort reset", JOptionPane.ERROR_MESSAGE);
    try{
    hostSocket.close();
         }catch(Exception a){
         JOptionPane.showMessageDialog(null, (a.toString()),"ERROR: Exception", JOptionPane.ERROR_MESSAGE);
    alive = false;
    System.exit(1);
    } // end method run

  • Problem with Threads and "plase wait..."-Window

    Hi everyone,
    I have a problem that I'm not able to solve in any way... I have a time-consuming task (a file decryption) which I execute in a separate thread; I've used the SwingWorker class, like suggested by sun-tutorial, and it works right. The problem is that I have to wait that the decryption have finished before continuing with program-execution. Therefore I would like to display a "please wait"-window while the task runs. I've tryed all the possible ways I know but the problem is always the same: the waitWindow is displayed empty, the bounds are painted but the contents no; it's only painted when the decrypt-task has finished. Please help me, I have no more resources....
    decrypt-file code:
    public class DecryptFile {
      private String cryptedFileNameAndPath;
      private ByteArrayInputStream resultStream = null;
      // need for progress
      private int lengthOfTask;
      private int current = -1;
      private String statMessage;
      public DecryptFile(String encZipFileNameAndPath) {
        cryptedFileNameAndPath = encZipFileNameAndPath;
        //Compute length of task...
        // 0 for indeterminate
        lengthOfTask = 0;
      public ByteArrayInputStream getDecryptedInputStream() {
        return this.resultStream;
       * Called from ProgressBarDemo to start the task.
      public void go() {
        current = -1;
        final SwingWorker worker = new SwingWorker() {
          public Object construct() {
            return new ActualTask();
        worker.start();
       * Called from ProgressBarDemo to find out how much work needs
       * to be done.
      public int getLengthOfTask() {
        return lengthOfTask;
       * Called from ProgressBarDemo to find out how much has been done.
      public int getCurrent() {
        return current;
      public void stop() {
        current = lengthOfTask;
       * Called from ProgressBarDemo to find out if the task has completed.
      public boolean done() {
        if (current >= lengthOfTask)
          return true;
        else
          return false;
      public String getMessage() {
        return statMessage;
       * The actual long running task.  This runs in a SwingWorker thread.
      class ActualTask {
        ActualTask () {
          current = -1;
          statMessage = "";
          resultStream = AIUtil.getInputStreamFromEncZip(cryptedFileNameAndPath); //here the decryption happens
          current = 0;
          statMessage = "";
      }The code that calls decryption and displays waitWindow
          final WaitSplash wS = new WaitSplash("Please wait...");
          final DecryptFile cryptedTemplate = new DecryptFile (this.templateFile);
          cryptedTemplate.go();
          while (! cryptedTemplate.done()) {
            try {
              wait();
            } catch (Exception e) { }
          this.templateInputStream = cryptedTemplate.getDecryptedInputStream();
          wS.close();Thanks, thanks, thanks in advance!
    Edoardo

    Maybe you can try setting the priority of the long-running thread to be lower? so that the UI will be more responsive...

  • Problem with threads in j2me

    im using jdk 1.6 with java wtk 2.1
    ya i know..
    2.1 is a jdk1.4 source
    but im using souce as 1.4 during compiliation so thats not the prob
    this is my code
    package org.learn;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.lcdui.Alert;
    import javax.microedition.lcdui.Display;
    public class thtest extends MIDlet
    Thread t;
    public void startApp()
    Alert a=new Alert("hello");
    a.setString("hello");
    Alert b=new Alert("world");
    b.setString("world");
    Display d = Display.getDisplay(this );
    d.setCurrent(a);
    t=Thread.currentThread();
    try{
    t.sleep(10000);
    catch (Exception e){}
    d.setCurrent(b);
    public void pauseApp()
    public void destroyApp(boolean unconditional)
    its just supposed to pause between the alerts using threads
    however when i run it using the wtk, the emulator run properly but when i launch the app, it stops executing giving me this:
    "Error verifying method org/learn/thtest startApp()V
    Approximate bytecode offset 49: Inconsistent or missing stackmap at target
    %the stack info%
    Execution completed.
    437782 bytecodes executed
    9 thread switches
    486 classes in the system (including system classes)
    2506 dynamic objects allocated (73832 bytes)
    2 garbage collections (60652 bytes collected)
    Execution completed.
    437782 bytecodes executed
    9 thread switches
    486 classes in the system (including system classes)
    ALERT: java/lang/VerifyError: org/learn/thtest.
    2506 dynamic objects allocated (73832 bytes)
    2 garbage collections (60652 bytes collected)
    please can someone help me out with this, is it an error on my part or do i have to set some option.

    Hi gandalf123,
    First, Thread.sleep is a static method, so you don't need to create a Thread object to use it.
    I think the problem is due to the fact you don't preverify your midlet.
    More over, you don't need to double post your question.

Maybe you are looking for

  • Passing contents of text file in oracle cursor

    Hi, I need to pass the content of text file in cursor and pass it on to calling codes. then calling codes will generate another text at their end. Can some help how can I pass contents of text file in oracle cursor? Thanks

  • My Macbook pro 10.5.8 will not download the new version of skype

    I am abroad at the moment - suddenly Skype cut out, informing me that the version was outdated.  I need skype to operate for my work -  the new version of skype won't download...  do I need to upgrade my Macbookpro 10.5.8 now?

  • What is OEM_sqlplus_input_finished used for?

    During recovery of my database just for testing purpose I got such error: Prosz� poda� dziennik: {<RET>=sugerowany | nazwa_pliku | AUTO | CANCEL} ORA-00308: you can't open archived log 'OEM_sqlplus_input_finished' ORA-27041: can't open file OSD-04002

  • Is Muse available on an as-needed basis?

    I am an "intermittant" developer.  I don't develop web sites full time, only when needed.  I like what I've seen so far with Muse. It seems incredable.   BUT, I can't justify paying for a program that I won't use too often.  Can I start and stop my s

  • Converting a line of code into something recognized by Animate

    I'm trying to embed a LinkedIn profile on my Stage. However, due to the Same Origin policy for browsers, this has been difficult to achieve. However, after researching it, I've found what I believe to be the code that works. The only thing is that I'