2 Configuring Business Services Server

This chapter contains the following topics:

2.1 Setting Up the Business Service Server Logging

This section provides an overview of business service logging and discusses how to set up web service logging.

The business service framework package provides an interface that provides logging utilities for activities related to published business services and business services. You use log files to troubleshoot system behavior. The location of the business service and published business service log files is defined in the jdelog.properties file.

At runtime, the system updates the log file with these kinds of errors:

  • Severe

  • Warning

  • Application

  • Information

2.1.1 Setting Up Web Service Logging Using SM Console

To set up web service logging when using SM Console:

  1. Login to the EnterpriseOne SeverManager Console.

  2. Navigate to the specific EnterpriseOne Business Services Server Instance for which logging needs to be enabled.

  3. In the Configuration section - Click on jdelog.properties Logging.

  4. In the Log File Configuration screen; the following can be configured:

    Log File Name

    Log Level Threshold - For detailed logging you can set Log Level to Low Level Troubleshooting Messages (Verbose).

    Log Format - For detailed logging you can set Log Format to Technical Format with Threads.

    Log Components - For detailed logging you can set Log Components to ALL so as to get information on all the Tools Components.

    Click on Apply.

    Restart the EnterpriseOne Business Services Server Instance for changes to take effect.

    Description of logscshot.gif follows
    Description of the illustration ''logscshot.gif''

2.2 Configuring the Business Services Server to Consume Web Services

This section contains the following topics:

2.2.1 Understanding Business Services Server Configuration for Consuming Web Services

You must start the JDENet kernel on the Business Services Server so that the Business Services Server can communicate with JD Edwards EnterpriseOne. You must also configure the Business Services Server with an HTTP proxy server so that outgoing connections can be made.

2.2.2 Configuring JDENet

The Business Services Server uses JDENet to communicate with a JD Edwards EnterpriseOne client (Microsoft Windows or HTML) or JD Edwards EnterpriseOne enterprise server. You can configure your system to use either one port or multiple ports to listen for and receive JDENet messages from the Enterprise Server.

2.2.2.1 Configuring a Business Services Server to Use a Single Port

If your Business Services Server is a standalone machine, or if you want to use only one port to listen for and receive JDENet messages from the JD Edwards enterprise server, you must configure the Object Configuration Manager (OCM). The client or enterprise server uses OCM to look up the machine name and port of the Business Services Server.

See "Setting Up OCM for Business Functions Calling Business Services" in the JD Edwards EnterpriseOne Tools Business Services Development Guide.

A JDENet kernel, SBFServerJavaKernel, is started on the Business Services Server. The business service server listens for messages for this kernel. This kernel listens for a Ping message and for messages that call a business service. The Business Services Server response to the Ping message indicates that the kernel is up and running on the Business Services Server.

Configure these settings in the [JDENET] section of the jdeinterop.ini file on the Business Services Server:

Parameter Description
serviceNameListen= Enter the port on which the business service server listens for JDENet messages. The setting for the Business Services Server and OCM must be the same. The port specified must be different than the serviceNameConnect port setting.
maxKernelRanges= The maxKernelRanges setting defines the maximum allowed kernels on the Business Services Server. SBFServerJavaKernel is the only kernel supported on the Business Services Server, and this kernel is responsible for processing web service call messages from the client or enterprise server. Currently, the only allowed value for this property is 1.

Configure these settings in the [JDENET_KERNEL_DEF1] section of the jdeinterop.ini file on the Business Services Server:

Note:

Values for all of the properties except maxNumberOfThread are static and do not change.
Parameter Value or Description
krnlName= SBFServerJavaKernel
processClassName= oracle.e1.bssvfoundation.impl.jdenet.SBFServerJavaKernel
startMessageRange= 16201
endMessageRange= 16450
maxNumberOfThread= Defines the number of threads that will be started for the SBFServerJavaKernel, thereby defining the number of simultaneous web service call requests the kernel can process. This maxNumberOfThread value must be set appropriately, based on metrics such as call volume and server machine size.

2.2.2.2 Configuring a Clustered Business Services Server Instance for Consumer Business Services

You can use Server Manager to create a clustered business services server instance to support clustering for consumer business services. This clustering feature enables scalability, load balancing, and high availability for consumer business services by providing multiple incoming ports so that multiple servers in the cluster can open socket connection to different ports to receive incoming JDENet messages from the Enterprise Server, and the Enterprise Server can send JDENet messages to multiple clustered business services server ports.

See "Configuring a Clustered Business Services Server Instance for Consumer Business Services" in the JD Edwards EnterpriseOne Tools Server Manager Guide.

When you use Server Manager to create the business services server instance, you enter host/port information for all of the servers in the cluster in the Cluster Listen Host/Port field in the Miscellaneous area of the Configuration section. This information is stored with the property clusterHostPort under the CLUSTEROUTBOUND section of the JDEINTEROP.ini of the Busienss Services server instance. When the Business Services Server instance is started, the configuration information is read, and the host/port information is written to the Cluster Server Info table (F986102). Table F986102 includes a status for each business services service in the cluster. A status of AV indicates that the server is active and available. A status of NA indicates the server is stopped. When a business services server has a status of NA, the Enterprise Server does not attempt to send the JDENet message to that particular server.

When a consumer business service runs, the business service calls a business function that is running on the Enterprise Server. The business function reads the clustered business services server host/port information from the F986102 table and identifies only those business services servers in the cluster that have a status of AV and stores the host/port information for the available business services servers in a list. To minimize database calls, the business function does not read from the table if data already exists in the list. To ensure there is update-to-date information in the list, the business function reads and stores the information from the table and refreshes the list.

The business function tries to send the JDENet message to the first host/port item in the list. For subsequent requests, the business function tries to send the JDENet message to the next host/port item in the list in a round-robin fashion. Before sending the JDENet message, the business function pings the host/port. If the ping is successful, the message is sent; if the ping is not successful, the business function tries to send the message to the next active host/port in a round-robin fashion.

When a stopped business services server is started, this business services server is added to the list within 15 minutes, due to the database refresh for Table F986102. This enables load balancing and failover to be achieved effectively.

2.2.3 Configuring an HTTP Proxy Server

The Business Services Server also supports web services consumer functionality. The Business Services Server is deployed and configured using Server Manager. This section provides information on the additional configuration for consuming third-party web services.

An HTTP proxy server is commonly used for outgoing HTTP connections. When an HTTP proxy server is present, all Internet connections are made through the HTTP proxy server. The Business Services Server might need to make an Internet connection when calling an external web service. These HTTP proxy parameters are available for the Business Services Server:

Parameter Description
http.proxyHost The host name of the proxy server.
http.proxyPort The port number of the proxy server.
http.nonProxyHosts Optional. The machines and domains that do not need to be routed through the proxy server. Typically, these are all machines on the intranet. Multiple entries must be separated by a vertical bar (|).
http.proxyUser Optional. The user name to be used for authentication on the proxy server.
http.proxyPassword Optional. The password for the user name that is being used for authentication.

2.2.3.1 Configuring a Secure HTTP Connection

Both the Oracle WebLogic Server and the WebSphere application server support secure HTTP (HTTPS) connections. If you are using an HTTPS connection, you must manually configure HTTPS proxy parameters. The HTTPS proxy configurations are in addition to the HTTP proxy server configurations set by Server Manager. This table identifies the HTTPS proxy server parameters:

Parameter Description
https.proxyHost The host name of the proxy server.
https.proxyPort The port number of the proxy server.
https.nonProxyHosts Optional. The machines and domains that do not need to be routed through the proxy server. Typically, these are all machines on the intranet. Multiple entries must be separated by a vertical bar (|).
https.proxyUser Optional. The user name to be used for authentication on the proxy server.
https.proxyPassword Optional. The password for the user name that is being used for authentication.

2.2.3.2 Configuring an HTTP Proxy Server for WAS

Use these steps to set up an HTTP proxy server for WAS.

To set up an HTTP proxy on WAS:

  1. On the IBM WebSphere Application Server, open the WebSphere Application Server console.

  2. In the left navigation pane, click the Application Servers link under Servers.

  3. Click the application server that is hosting the Business Services Server.

  4. Expand Process Definition on the right, and then click the Java Virtual Machine (JVM) link.

  5. On the JVM properties page, click Custom Properties.

  6. Add the required http proxy configuration properties.

    • http.nonProxyHosts

    • http.proxyHost

    • http.proxyPassword

    • http.proxyPort

    • http.proxyUser

    • javax.xml.rpc.ServiceFactory - oracle.j2ee.ws.client.ServiceFactoryImpl

  7. Add the required https proxy configuration properties.

    • https.nonProxyHosts

    • https.proxyHost

    • https.proxyPassword

    • https.proxyPort

    • https.proxyUser

2.2.4 Enabling Business Services Running on WAS 7.0 to Consume Third-Party Web Services

To consume third-party web services from Business Services Server proxy objects running on WAS, you must add specific JVM arguments. This section provides information on setting the JVM arguments for Business Services Server on WAS for consuming third-party web services.

To configure JVM arguments for WAS:

  1. On the IBM WebSphere Application Server, open the WebSphere Application Server console.

  2. In the left navigation pane, click to expand the Servers link.

  3. Click to expand the Server Types link.

  4. Click the WebSphere application servers link.

  5. In the Application servers page, click the application server that is hosting the Business Services Server.

  6. Under the Server Infrastructure section, expand Java and Process Management link.

  7. Click the Process Definition link.

  8. In Additional Properties on right, click the Java Virtual Machine (JVM) link.

  9. On the JVM properties page, add these separate arguments in the Generic JVM arguments text box after the default_path argument:

    -Djavax.xml.rpc.ServiceFactory=oracle.j2ee.ws.client.ServiceFactoryImpl
    -Djavax.xml.soap.SOAPConnectionFactory=oracle.j2ee.ws.saaj.client.p2p. HttpSOAPConnectionFactory
    

    Note:

    Enter each argument as a contiguous string with no spaces; however, each argument string must be separated with a space.
  10. Click Apply.

  11. In Messages, click the Save link to save the JVM arguments directly to the master configuration.

  12. In order for the changes to take effect, you must restart the Business Services Server Instance on WAS.

2.2.5 Enabling Business Services Running on WebLogic Server to Consume Third-Party Web Services

Note:

If you are using JD Edwards EnterpriseOne Tools Release 9.2 with JD Edwards EnterpriseOne Applications Release 9.2, JDeveloper 12c is installed on your system. With JDeveloper 12c, you can create only JAX-WS business services.

If you are using JD Edwards EnterpriseOne Tools Release 9.2 with JD Edwards EnterpriseOne Applications Release 9.0 or 9.1, JDeveloper 11g is installed on your system. With JDeveloper 11g, you can create JAX-WS and JAX-RPC business services.

A business services .ear file, which was built for WebLogic Server (WLS) using JDeveloper, that contains business services proxy (consumer) objects created out of a secure web service running on WLS, requires that you perform the following tasks so that the business services proxy object can successfully run on WLS and consume the secure web service:

  • Copy the policy file Wssp1.2-2007-Https-UsernameToken-Plain.xml to the domain where WLS is installed. For example, copy the policy file Wssp1.2-2007-Https-UsernameToken-Plain.xml to the Weblogic_Install_Path\\user_projects\domains\domain_name path.

  • Copy the certificate file DemoTrust.jks to the domain where WLS is installed. For example, copy the DemoTrust.jks file needs to the Weblogic_ Install_Path\\user_projects\domains\domain_name path.

Note:

The policy file Wssp1.2-2007-Https-UsernameToken-Plain.xml can be found in the weblogic.jar or wseeclient.jar in the Weblogic_Install_Path\wlserver\ server\lib path.

The certificate file DemoTrust.jks can be found in the Weblogic_Install_Path\wlserver\server\lib path.

2.2.6 Adding a Custom Property for Improving Business Service Server Startup in IBM WebSphere 9.0

You can increase the performance of Business Service Server while starting it in WebSphere 9.0 by adding a custom JVM property to the server to disable implicit bean scanning. This setting skips the scanning of archives that do not contain a bean descriptor (beans.xml) file.

  1. On the IBM WebSphere Application Server, open the WebSphere Application Server console.

  2. In the left navigation pane, click to expand the Servers link.

  3. Click to expand the Server Types link.

  4. Click the WebSphere application servers link.

  5. In the Application servers page, click the application server that is hosting the Business Services Server.

  6. Under the Server Infrastructure section, expand the Java and Process Management link.

  7. Click the Process Definition link.

  8. In Additional Properties on the right, click the Java Virtual Machine (JVM) link.

  9. In Additional Properties on the right, click the Custom properties link.

  10. Click New to add the following property:

    Name: com.ibm.ws.cdi.enableImplicitBeanArchives
    Value: false. The default value is true.
    Description: Enter any optional description for the property.
    
  11. Click Apply.

  12. Click the Save link to save the JVM custom property directly to the master configuration.

  13. Restart the Business Services Server instance on WebSphere Application Server in order for the changes to take effect.

2.3 Allowing for a PS_Token to be Received by the EnterpriseOne Login Module

In order to support all the mechanisms used by JD Edwards EnterpriseOne for authentication, the E1LoginModule allows a PS_TOKEN to be received. To use a PS_TOKEN for authentication, the web service call needs to provide additional information in the username field. At minimum both "DN=<E1 user id>" and "PS_TOKEN=true" must be specified. For example:

username - DN=KB5236952,PS_TOKEN=true
password - PS_TOKEN in string form

In addition, environment and role can be specified in combination with the PS_TOKEN indicator.

username - DN=KB5236952,ENV=STGAWSC1,ROLE=*ALL,PS_TOKEN=true
password - PS_TOKEN in string form

The sequence and case of the user name values are not significant.

2.4 Business Services Server Fault Tolerance

When a machine in the system goes down or is brought down, other machines in the system should gracefully degrade while it is down and reconnect once it is back up. For the Business Services Server the relevant machines are the Security Server and the Enterprise Server. The connection to the Enterprise Server is fault tolerant. If the Enterprise Server is down, the SOAP faults thrown from a called web service are descriptive and indicate the problem. If the Enterprise Server comes back up, subsequent web service calls connect correctly without restarting or any further administration of the Business Services Server. If connections to the Enterprise Server time out the connections are reestablished.

Note:

When the Security and Enterprise Servers are bounced, or kernel recycling occurs, the Business Services Server does not need to be bounced.

2.4.1 Enterprise Server is Unavailable

The connection from the Business Services Server to the Enterprise Server is based on a token. If the Enterprise Server is down or cannot be contacted, the exception thrown to the web service caller indicates that server login has failed. When the Security Server comes back up, the token is revalidated as necessary without any administrator interaction. If the Enterprise Server remains unavailable, the caller receives a descriptive message.

The following sample messages in the Business Services Server log indicate that the Enterprise Server is unavailable:

17 Sep 2007 16:27:13,140 [Line ?] [main] [SEVERE]  - [INTEROP]         Fail to execute BSFNMethod com.jdedwards.system.kernel.CallObjectSystemException: COSE#1002 Connection failed: LOCALHOST:6081 com.jdedwards.system.connector.dynamic.ServerFailureException: Fail to execute BSFNMethod com.jdedwards.system.kernel.CallObjectSystemException: COSE#1002 Connection failed: LOCALHOST:6081
com.jdedwards.system.connector.dynamic.ServerFailureException: Fail to execute BSFNMethod com.jdedwards.system.kernel.CallObjectSystemException: COSE#1002 Connection failed: LOCALHOST:6081

2.4.2 Security Server is Unavailable

The connection from the Business Services Server to the Security Server is based on a token. If the security server is down or cannot be contacted, the exception thrown to the web service caller indicates that server login has failed. When the Security Server comes back up, the token is revalidated as necessary without any administrator interaction.

When the first published business service call makes a new connection after the security token expires, the cached token is revalidated.

The following sample messages in the Business Services Server log indicate that the Security Server is unavailable:

17 Sep 2007 16:37:20,281 [Line ?] [main] [SEVERE]  - [INTEROP]         Cannot connect to any OneWorld Security Server.FAILURE: null    com.jdedwards.system.connector.dynamic.ServerFailureException: Cannot connect to any OneWorld Security Server.FAILURE: null 
com.jdedwards.system.connector.dynamic.ServerFailureException: Cannot connect to any OneWorld Security Server.FAILURE: null
at com.jdedwards.system.connector.dynamic.Connector.loginBase(Unknown Source)
        at com.jdedwards.system.connector.dynamic.Connector.login(Unknown Source)
        at oracle.e1.bssvfoundation.impl.security.E1Principal.login(Unknown Source)
        at oracle.e1.bssvfoundation.impl.security.PrincipalCache.getIniPrincipal(Unknown Source)
        at oracle.e1.bssvfoundation.impl.jdenet.CallSBFHandler.callSBF(Unknown Source)
        at oracle.e1.bssvfoundation.base.TestBusinessService.callBSSVWithXMLFile(Unknown Source)
        at oracle.e1.bssv.JTRH90I10.RI_HTTP_ParseTransformSendMessage.main(RI_HTTP_ParseTransformSendMessage.java:22)
17 Sep 2007 16:37:20,281 [Line ?] [main] [DEBUG ]  - [BSSVFRAMEWORK]    [Context ID: ]    Login failed
Cannot connect to any OneWorld Security Server.FAILURE: null 
17 Sep 2007 16:37:20,500 [Line ?] [main] [DEBUG ]  - [INTEROP]         Connector shut down completely

2.4.3 Business Services Server is Unavailable

When the Business Services Server is down, the Business Services Server log displays these messages:

4756/5824 WRK:Starting jdeCallObject                    Mon Nov 12 11:55:39.171089            XMLRequest.cpp1260
            ICU0000017 - ICU CodePage for 1252 is ibm-1252.
4756/5824 WRK:Starting jdeCallObject                    Mon Nov 12 13:03:06.734001            callsbfmsg.c311
            Error when sending JDENET message. JDENET Error = eConnectionFailed
4756/664 WRK:Starting jdeCallObject          Mon Nov 12 13:07:15.390053            XMLRequest.cpp1260
            ICU0000017 - ICU CodePage for 1252 is ibm-1252.
4756/664 WRK:Starting jdeCallObject          Mon Nov 12 13:08:24.453002            callsbfmsg.c311
            Error when sending JDENET message. JDENET Error = eConnectionFailed
4756/664 WRK:Starting jdeCallObject          Mon Nov 12 13:12:37.093001            callsbfmsg.c311
            Error when sending JDENET message. JDENET Error = eConnectionFailed
4756/664 WRK:Starting jdeCallObject          Mon Nov 12 13:15:09.546001            B953002.c367
            Internal Server Error during execution of Business Service.

2.5 Configuring the Business Services Server for Media Object Operations

The Business Services Server is deployed and configured using Server Manager. To support Media Object operations on the Business Services Server, you must identify the Media Object Server type, user, and password for accessing the Media Object Server shared location. In Server Manager, configure the settings in the Media Object Settings section of the Business Services Server to establish access to the Media Object Server. The settings enable you to use secure file transfer protocol (SFTP) for accessing media objects. For more information about SFTP, see Enabling Secure File Transfer Protocol (SFTP) for Media Objects.

The Media Object Settings also enable you to identify the media object file types (extensions) that you do not want allowed in EnterpriseOne. For a description of the settings, including valid values, refer to the Server Manager internal help for each setting.