Erreur HTTP 500 Internal Server Error à l'exécution de la commande rwservlet dans Reports 11g
S'APPLIQUE À :
Oracle Reports Developer - Version 11.1.2.0.0 et ultérieures
Les informations de ce document s'appliquent à toutes les plateformes.
***Pertinence vérifiée le 08-APR-2015***
SYMPTÔMES
Le servlet Reports ne fonctionne pas et l'erreur suivante s'affiche lorsque la commande rwservlet est lancée depuis une URL dans un navigateur
Exemple
http://hostname:port/reports/rwservlet
HTTP Error 500 Internal server error
- Les serveurs Reports fonctionnent correctement lorsqu'ils sont testés avec la commande rwclient
- Le serveur géré WLS_REPORTS est démarré et fonctionne
Les informations de trace suivantes sont enregistrées dans les fichiers journaux ci-dessous
WLS_REPORTS-diagnostic.log
[2012-05-15T14:08:44.499-04:00] [WLS_REPORTS] [NOTIFICATION] [DFW-40101] [oracle.dfw.incident] [tid: [STANDBY].ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <WLS Kernel>] [ecid: 0000JTHg1bJESOWzLwVK8A1FgctP000004,0] An incident has been signalled with the incident facts: [problemKey=BEA-101020 [HTTP][java.lang.NullPointerException
] incidentSource=SYSTEM incidentTime=Tue May 15 14:08:44 EDT 2012 errorMessage=BEA-101020 executionContextId=null]
[2012-05-15T14:08:45.201-04:00] [WLS_REPORTS] [NOTIFICATION] [DFW-40104] [oracle.dfw.incident] [tid: [STANDBY].ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <WLS Kernel>] [ecid: 0000JTHg1bJESOWzLwVK8A1FgctP000004,0] [errid: 1] [detailLoc: <DOMAIN_HOME>\servers\wls_reports\adr\diag\ofm\classicdomain\wls_reports\incident\incdir_1] [probKey: BEA-101020 [HTTP][java.lang.NullPointerException\r]] incident 1 created with problem key "BEA-101020 [HTTP][java.lang.NullPointerException]"
WLS_REPORTS.log
####<May 15, 2012 2:08:44 PM EDT> <Notice> <Diagnostics> <cimx4> <WLS_REPORTS> <[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1337105324499> <BEA-320068> <Watch 'UncheckedException' with severity 'Notice' on server 'WLS_REPORTS' has triggered at May 15, 2012 2:08:44 PM EDT. Notification details:
WatchRuleType: Log
WatchRule: (SEVERITY = 'Error') AND ((MSGID = 'WL-101020') OR (MSGID = 'WL-101017') OR (MSGID = 'WL-000802') OR (MSGID = 'BEA-101020') OR (MSGID = 'BEA-101017') OR (MSGID = 'BEA-000802'))
WatchData: DATE = May 15, 2012 2:08:44 PM EDT SERVER = WLS_REPORTS MESSAGE = [ServletContext@848505793[app:reports module:/reports path:/reports spec-version:2.5 version:11.1.2]] Servlet failed with Exception
java.lang.NullPointerException
at oracle.reports.rwclient.RWClient.doPost(RWClient.java:526)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
SUBSYSTEM = HTTP USERID = <WLS Kernel> SEVERITY = Error THREAD = [ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)' MSGID = BEA-101020 MACHINE = cimx4 TXID = CONTEXTID = TIMESTAMP = 1337105324468
WatchAlarmType: AutomaticReset
WatchAlarmResetPeriod: 30000
CAUSE
Ce problème survient lorsque le fichier rwservlet.properties est corrompu. Il est important de préciser qu'il n'a été observé jusqu'ici que dans un scénario de mise à niveau peu fréquent.
Voici un exemple de situation dans laquelle ces erreurs apparaissent.
Des balises ns3 figurent dans le fichier DOMAIN_HOME\config\fmwconfig\servers\WLS_REPORTS\applications\reports_11.1.2\configuration\rwservlet.properties, ce qui fait échouer le servlet Reports.
Exemple
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:rwservlet xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:demo="http://xmlns.oracle.com/demo/config" xmlns:ns3="http://xmlns.oracle.com/reports/rwservlet">
<ns3:server>RptSvr_hostname_asinst_1</ns3:server>
<ns3:singlesignon>no</ns3:singlesignon>
<ns3:inprocess>no</ns3:inprocess>
<ns3:reloadkeymap>no</ns3:reloadkeymap>
<ns3:keymapfile>cgicmd.dat</ns3:keymapfile>
</ns3:rwservlet>
Il est important de préciser que toute erreur de syntaxe causée par une modification manuelle de rwservlet,properties entraîne la même erreur 500. Voici un exemple de modification manuelle de rwservlet.properties qui entraîne la même erreur
Exemple
<--webcommandaccess>L2</webcommandaccess-->
Needs to be:
<!--webcommandaccess>L2</webcommandaccess-->
*** Remarquez le signe "!" manquant
SOLUTION
Assurez-vous que le fichier rwservlet.properties est correct. Pour l'exemple présenté dans cette note de soutien, la solution est la suivante.
1- Sauvegardez rwservlet.properties
2- Arrêtez le serveur géré WLS_REPORTS
3- Modifiez rwservlet.properties en remplaçant
CECI
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:rwservlet xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:demo="http://xmlns.oracle.com/demo/config" xmlns:ns3="http://xmlns.oracle.com/reports/rwservlet">
<ns3:server>RptSvr_hostname_asinst_1</ns3:server>
<ns3:singlesignon>no</ns3:singlesignon>
<ns3:inprocess>no</ns3:inprocess>
<ns3:reloadkeymap>no</ns3:reloadkeymap>
<ns3:keymapfile>cgicmd.dat</ns3:keymapfile>
</ns3:rwservlet>
PAR CECI
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rwservlet xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://xmlns.oracle.com/reports/rwservlet">
<server>RptSvr_hostname_asinst_1</server>
<singlesignon>no</singlesignon>
<inprocess>no</inprocess>
<reloadkeymap>no</reloadkeymap>
<keymapfile>cgicmd.dat</keymapfile>
</rwservlet>
4- Redémarrez WLS_REPORTS
5- Testez de nouveau l'URL
http://hostname:port/reports/rwservlet