Skip to end of metadata
Go to start of metadata

Portal Runtime Error - Login Error after installation or upgrade

com.sapportals.portal.prt.runtime.PortalRuntimeException: PortalRuntimeException

at com.sapportals.portal.prt.core.PortalRequestManager.handleRequestException(PortalRequestManager.java:829)
at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:715)
at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:209)

Caused By: Portal not finding the correct par file.

PAR File Name: com.sap.portal.navigation.service.par

Solution: After removing the BAK file com.sap.portal.navigation.service.par.bak the file which got converted after deploying PAR file com.sap.portal.navigation.service.par. Redeploy the PAR file com.sap.portal.navigation.service.par in <j2ee_home>/cluster/server/services/ servlet_jsp/work/jspTemp/irj/root/WEB-INF/deployment\pcd after stopping EP.

Portal Runtime Error: IConnectorGatewayService

Trying to connect to backened system using JCA Connection framework gets error at runtime:

java.lang.NoClassDefFoundError: com/sapportals/portal/ivs/cg/IConnectorGatewayService

Solution: Interface IConnectorGatewayService - com.sapportals.portal.ivs.cg

Interface IConnectorService - com.sapportals.portal.ivs.cg

When trying to connect to backened system, calling

IConnectorGatewayService cgService =(IConnectorGatewayService) connectorservice and when you get error then in that case it means your portalapp.xml is incorrect and you are missing the following sharing reference/service refernece in your portalapp.xml. It should be like this:

code<?xml version="1.0" encoding="utf-8"?>
<application>
<application-config>
<property name="SharingReference" value="com.sap.portal.ivs.connectorservice"/>
</application-config>
<components/>
<services>
<service name="test">
<service-config>
<property name="className" value="com.ust.jca.test"/>
</service-config>
<service-profile/>
</service>
</services>
</application>[/code]

Portal Runtime Error: ESS Functionality - RFC_ERROR on ESS Personal Information

Caused by: ESS = com.sap.aii.proxy.framework.core.BaseProxyException : Access via 'NULL' object reference not possible., error key: RFC_ERROR_SYSTEM_FAILURE
at com.sap.aii.proxy.framework.core.AbstractProxy.send $(AbstractProxy.java:150)
at com.sap.xss.hr.per.xx.family.model.HRXSS_PER_P0021_ XX.hrxss_Per_Modify_P0021_Xx(HRXSS_PER_P0021_XX.ja va:302)
at com.sap.xss.hr.per.xx.family.model.Hrxss_Per_Modify _P0021_Xx_Input.doExecute(Hrxss_Per_Modify_P0021_X x_Input.java:137)
at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRF CModelClassExecutable.execute(DynamicRFCModelClass Executable.java:92)

Solution: Apply OSS Note 1018036 - Access not possible using NULL object reference error in ESS.

and it will fix the field errors.

Where Symptom

In ESS Personal information scenario when end user clicks on review after editing the record it dumps with the following error:
"access not possible using NULL object reference, error key:
RFC_ERROR_SYSTEM_FAILURE "

Reason and Prerequisites

In case record is not modified successfully it should discard the trial.Due to program error this was not happening correctly

Solution

Code changes were done in ESS adapter to handle this scenario

Related Note:

Note 984825: "No Data record for key" error in ESS persinfo scenarios

Portal Runtime Error: IConnectorGatewayService throws an Error on Service call  

A blank portalapp.xml file that defines the application properties, as well as the components and services in the application. Structure of the portalapp.xml goes like this:

In EP 6.0 with Support Pack 9 + PDK connecting to SQL Server using JDBC

Defined portalapp.xml:

code<?xml version="1.0" encoding="utf-8"?>
<application>
<application-config>
<property name="PrivateSharingReference" value="com.sap.portal.htmlb,com.sap.portal.ivs.connectorservice"/>
</application-config>
<components>
<component name="SimpleJDBC">
<component-config>
<property name="ClassName" value="com.linqit.SimpleJDBC"/>
<property name="JSP" value="pagelet/display.jsp"/>
</component-config>
<component-profile>
<property name="System" value="xxxxxxxxDB"/>
<property name="Query" value="SELECT dbo.Products.ProductName,dbo.Categories.CategoryName FROM dbo.Products,dbo.Categories WHERE dbo.Categories.CategoryID=dbo.Products.ProductID"/>
<property name="tagLib" value="/SERVICE/htmlb/taglib/htmlb.tld"/>
</component-profile>
</component>
</components>
<services/>
</application>[/code]

Solution: Add an additional Service Reference in the portalapp.xml for SP9

code<application-config>
<property name="ServicesReference" value="com.sap.portal.ivs.connectorservice"/>
<property name="PrivateSharingReference" value="com.sap.portal.htmlb"/>
</application-config>[/code]

Portal Runtime Error: Missing Jar file for the classes IConnectorGatewayService and IConnectorService

Caused By: The project was not built since its classpath is incomplete. Cannot find the class file for com.sapportals.portal.ivs.cg.ConnectionProperties. Fix the classpath then try rebuilding this project.

Solution: Locate the following libraries by doing search under \usr\sap\<SID>\<INSTANCE ID>\j2ee:

  • com.sap.portal.ivs.connectorservice_api.jar
  • connector.jar
  • exception.jar
  • portal_services_api_lib.jar

JAR file portal_services_api_lib.jar that contains:

com.sapportals.portal.ivs.cg.ConnectionProperties;
com.sapportals.portal.ivs.cg.IConnectorGatewayService
com.sapportals.portal.ivs.cg.IConnectorService

Locate and add required JAR file to your project

Include portal_services_api_lib.jar in the project class path located at x:\usr\sap\\JC00\j2ee\cluster\server0\bin\ext\com.sap.portal.servi
ces.api\portal_services_api_lib.jar

Different support pack levels have different JAR files for classes. JAR Finder is an excellent tool to locate the JAR files for the libraries

For JAR Class Finder check this blog:

https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/639

Portal Runtime Error: JCO cannot load its RFC middleware layer

Where SAP JCo Architecture goes like this: In SAP JCo (standalone version), starting from a Java application, a Java method is forwarded via the JCo Java API and an additional Middleware Interface to RFC Middleware, where it is connected to an RFC (ABAP) call using the JNI (Java Native Interface) layer, and sent to the SAP system. Using the same method in the other direction, an RFC Call is converted to Java and forwarded to the Java application.

Exception: Exception in thread: java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
Native Library C:\WINDOWS\system32\sapjcorfc.dll already loaded in another classloader
at com.sap.mw.jco.JCO.(JCO.java:566)

JCO API for J2EE Aplication development with WAS 6.40.

Caused By: Bug Id: 4299094 & 4642062 on the Java SUN Developer Network

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id:%20=4299094

Class Loader did not unload native library when applet closedError Message:  Java Exception: java.lang.UnsatisfiedLinkError: Native Library C:\DRIVERS\CP8\akl5033\bin\Bug.dll already loaded in another classloader
Native Library Puiss loaded.java.lang.UnsatisfiedLinkError: Puiss

Evaluation: In the current VM implementation, a native library can only be associated with one classloader. Thus, when multiple applets attempt to use the same library, the VM tries to associate the library with more than one classloader, and that's why it fails. Thus, this is a limitation of the current VM implementation, and it is not a bug.

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4642062

cannot load same DLL from more than one applet in browserError Message: unsatisfied link error", "dll already loaded by an xxxxx  classloader". Evaluation: This is intentional.  Each applet is loaded with its own classloader, and a native library cannot be loaded by more than one classloader.
This is in part a security concern, as we don't want one classloader's app to muck up another classloader's app by tampering with native library state.

Solution*: Apply OSS Notes 542175 -* Don't include JCO into J2EE application, use library instead

Where Symptom

java.lang.ExceptionInInitializerError: JCO.classInitialize():Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'Native Library ...sapjcorfc.dll already loaded in another classloader

Reason and Prerequisites

In SAP J2EE Engine as well as in INQMY AppServer each application is loaded in its own classloader. Reason: security, application isolation.
That's why if two applicatinos use JCO.jar and each includes it into own EAR file then jco is loaded twice in different classloaders and these classloaders try to load the native library simultaneously, this fact explains the error message.
The same may happen with any other stuff which uses native code.

The same may happen during redeploy of the application: each version of the application has own classloader. The old one is freed and should be garbage collected but because of delayed garbage collection even if your application is the only one that uses jco during redeploy there exist simultaneously two classloaders (old and new ones) loading jco.jar and the error appears.

Solution

Don't include jco jar into your application, for example into WEB-INF/lib.
Use central (shared) instance of jco.jar. In sap j2ee 620 the library jco is predefined, see server/managers/library.txt. The only thing you have to do is to define a reference from your application to this library in reference.txt like
reference myAppName library:jco
In inqmy 4.2.7 you need to add library jco jco.jar into library.txt or install the prepared package (see notes 431977, 451739).
In old in-q-my versions the reference in reference.txt had to be added manually (see notes 435363, 431977, 451739, 509883), in 620 you may specify the reference during deployment in the deploy tool (Tab Deploy, Menu Libraries), in deploy.xml or from the server command console:
> add deploy
> changeref -m yourAppName library:jco
For upgrading of jco 2.0 please see notes 529396, 538282, 539539.

Related Notes:

Note 711890: References from an application to libraries in J2EE engine 6.30

Note 859444: How to deploy libraries on J2EE Engine6.40

Note 723562: SAP Java Connector: Configuration and Requirements

Portal Runtime Errors: JCO cannot load its RFC middleware layer

Exception: Exception in thread "main" java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC' default_cpc_mode at com.sap.mw.jco.JCO.<clinit>(JCO.java:309)

Exception: Exception in thread "main" java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC' JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [C:devcu rrjcosapjcorfc.dll]. Required version "2.1.5 (2005-02-15)". at com.sap.mw.jco.JCO.<clinit>(JCO.java:735)

Exception: Exception in thread "main" java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC' JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc. Found version "2.0.11 (2005-01-21)" but required version "2.1.5 (2005-02-15)". at com.sap.mw.jco.JCO.<clinit>(JCO.java:735)

Cause: These exceptions typically occur when different versions of sapjcorfc.dll and sapjco.jar have been installed. Anytime the JCo connector is upgraded to a new version, you need to ensure that all three libraries are updated (librfc32.dll, sapjcorfc.dll, and sapjco.jar). If any are left at the older version, one of the above exceptions is likely to occur.

Solution: Extract sapjcorfc.dll and sapjco.jar from the original JCo archive. Copy these files to the appropriate locations, overwriting the originally installed versions. Ensure that the PATH statement is updated to reflect the directory location of the DLL files and the Java CLASSPATH points to sapjco.jar.

Portal Runtime Error: JCo is unable to find the JCORFC library in the system path.

Exception: Exception in thread "main" java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC' com/sap/mw/jco/JCO$MetaData$Type1Data at com.sap.mw.jco.JCO.<clinit>(JCO.java:309)

Cause: This exception occurs when the directory containing sapjcorfc.dll cannot be found in the PATH environment variable. sapjcorfc.dll contains the middleware bridge between Java JCo and the C libraries that comprise SAP's RFCSDK. It must be made available to the JCo application through the system path.

Solution: Add the directory containing sapjcorfc.dll to the PATH statement i.e. PATH = %PATH%;C:jco. If this directory is not explicitly called out within the PATH statement, JCo will look for the file in the same directory that contains sapjco.jar. However, this method can lead to confusion if the Java application is to be deployed within a Java application server. In that case, the application server would either need to recognize the system PATH statement that includes the sapjcorfc.dll directory or be configured to read the library directly off the file system.

Portal Runtime Error: URL of a Web Dynpro Application

With URL http://host:port/irj not able to publish Web Dynpro iViews.

Solution: Fully Qualified Domain Name (FQDN) must be specified in the URL of Web Dynpro Application. The URL of a Web Dynpro application is automatically generated by the system. URL of application can be located in the Web Dynpro Explorer on the properties tab.

Structure of the URL of Web Dynpro Application :

http://<host>.<domain>.<extension>:<port>/sap/bc/webdynpro/<namespace>/<application name>

 Host is name of the application server. Domain comprises several hosts under a common name and can either be an individual host or network. Port can be removed if standard port 80 (HTTP) or 443 (HTTPS) is used. The namespace can be the standard namespace /SAP/ or customer namespaces. The application name is the name of the Web application as defined in the Web Dynpro explorer by the Web Dynpro component.

Write http:// <SERVER>.<DOMAIN>:<PORT>

Related Notes:

Note 654982: URL requirements due to Internet Standards.

Note 805344: How URLs are generated automatically in BW

Note 773830: FQHN determination in ICM

Note 512337: Customizing SAP Web Application Server Protocol (HTTP/HTTPS)

Note 434918: Configuration for fully qualified host names for BSP

Note 492533: URLs are generated without domains

Note 677118: SP31 - Fully Qualified Domain Names Check

Note 654326: Domain restrictions in a portal environment

Note 608322:  SLDAPICUST - Discrepancies with the host name, FQDN

For setting up FQDN check this blog:

https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2202

Portal Runtime Error: RFC_ERROR_LOGON_FAILURE: System received an expired SSO ticket

Com.sap.mw.jco.JCO$Exception: (103) RFC_ERROR_LOGON_FAILURE: System received an expired SSO ticket

at com.sap.mw.jco.MiddlewareJRfc.generateJCoException(MiddlewareJRfc.java:418)
at com.sap.mw.jco.MiddlewareJRfc$Client.connect(MiddlewareJRfc.java:835)
at com.sap.mw.jco.JCO$Client.connect(JCO.java:3129)
at com.sap.tc.webdynpro.modelimpl.dynamicrfc.RFCMetadataRepository.assureClientIsAlive(RFCMetadataRepository.java:138)
at com.sap.tc.webdynpro.modelimpl.dynamicrfc.RFCMetadataRepository.getJcoMetadataForFunction(RFCMetadataRepository.java:63)
... 58 more[/code]

Caused By: The SSO ticket expired. By default expiry time is 8 hrs. Leaving a system more than the specified time, ticket will expire.

There was also a bug before NW04 SP14 on the Web Dynpro runtime on this in the earlier version of Web Dynpro. Reason for this is that the tickets are held cached.  The expired SSO ticket can also be caused by a JCO connection pool not having been destroyed even after Web Dynpro application terminates. Same user starts another WD application using the same user id/authentication method/backened system combination. This is a bug that the portal does not correctly notify the WD framework that the WD application has closed. The older ticket is still held and returned showing an Expired ticket error. The fix was in the UME so that the appropriate notifications are sent to WD regarding the termination of the session. This bug is resolved from NW04 SP15 and onwards.

Solution: Go to System Administration - System Configuration - UM Configuration - Security Settings .......increase the value of the field "Lifetime of Sap Logon Ticket (hh:mm) Default entry is 8 hrs. Save changes and restart cluster.

It should be a value that is higher than the maximum working time of an employee increase the time for 24 hrs than 8 hrs.

If ticket is valid and using older than SP14 then need to upgrade to latest SP.

Related Notes:

Note 1130191: JCO Pool Viewer Tool for SSO Expiration Problem

Note 842635: Session Management for Web Dynpro Application

Note 825149: SSO Ticket expired cannot create Client window, JS error

Note 849730: Importing a Web Dynpro patch for Support Package 11

Note 849851: Importing a Web Dynpro patch for Support Package 12

Note 868055: Importing a Web Dynpro patch for Support Package 13

Note 1013230: JCO Client not connected/system received expired SSO ticket

Note 1015179: SSO ticket expired or connection timeouts

Checklist for SSO:

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/6535e690-0201-0010-6989-9e27386e1f24

  

Useful Notes:

Note 431977: Restart INQMY Server after configuration changes

Note 451739: NoClassDefFoundError: org/apache/struts/digester/Digester

Note 536121: java.lang.NoClassDeFoundError: com/sap/mw/jco/JCO$MetaData

Note 720554: NoClassDefFoundError:com/sap/tc/logging/LogController

Note 773401: Configuring Portal JDBC System connection properties

Note 913483: SAP NW Portal Connectivity - Central Note

Note 785029: Tool for testing connections from Portal to R/3 system

Note 737736: Tracing and Logging for SAP Connectors in NW04

Note 864823: Using a JDBC driver from a portal application

  • No labels

1 Comment

  1. Former Member

    Very good one.It was very useful when we get errors on portal.excellent