Skip Headers
Oracle® Retail Store Inventory Management Operations Guide
Release 14.0
E50034-02
  Go To Table Of Contents
Contents
Go To Index
Index

Previous
Previous
 
Next
Next
 

3 Backend System Configuration

This chapter of the operations guide is intended for administrators who provide support and monitor the running system.The content in this chapter is not procedural, but is meant to provide descriptive overviews of key system parameters, logging settings, and exception handling.

Supported Oracle Retail Products/Environments

For information about integration compatibility for this release and for requirements for SIM's client, servers, and database, see the Oracle Retail Store Inventory Management Installation Guide.

Configuring SIM Across Time Zones

For many SIM retailers, a corporate server is located in a different time zone than the stores connected to that corporate server. When a transaction is processed at these respective locations, there is timestamp information associated with these transactions. SIM has the ability to reconcile these time zone differences.

Setup RIB Interface GMT Parameter

System administration options enable you to specify the time zone to use when timestamps are published to or received from the Oracle Retail Integration Bus (RIB).

For detailed descriptions of list of GMT Parameter, see the Oracle Retail Store Inventory Management Implementation Guide, Volume 1, section ”Setup and Configuration”.


Note:

When Enable GMT is set to ”Yes”, the dates published to the RIB will be in GMT, and incoming timestamps in RIB messages will also be read as GMT; When the value is set to ”No”, timestamps are published to the RIB in the store time zone, and incoming timestamps in RIB messages will be read as the store time zone.

When integrate with systems which dates are not in GMT or not time zone specific, then the enable GMT configuration must be set to ”No”.


GUI based System and Store Configuration

SIM provides GUI screens for administrators to set some of the system and store configuration settings. For details, see the Oracle Retail Store Inventory Management Implementation Guide, section ”System and Store Administration”.

Configuration Files

Key system configuration parameters are described in this section. Key client-defined configurations for SIM are described in this section. The system parameters contained in these files are also detailed. Many parameters have been omitted from this section because retailers should not have to change them. Most of the configuration settings are set by SIM installer when retailers install SIM.

SIM configuration files are packaged as various resources jars, this section list the most commonly used configuration files.

Some settings in the files are configurable. Thus, when retailers install SIM into an environment, they must update these values to their specific settings.


Note:

When manually making configuration file changes, the updated .ear files must be redeployed.

SIM JNDI Configuration

The following section describes the SIM JNDI configuration.

jndi.cfg

The JNDI property file allows you to specify the properties to be used during client (SIM PC client, SIM wireless client, SIM batch client) looks up SIM server. The jndi.cfg is packaged in sim-client-resources.jar, sim-batch.zip, and sim-wireless.zip distributions.

Example 3-1 jndi.cfg File

# The InitialContextFactory class (Required)
INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory
 
# The URL for the naming server (Required)
NAMING_SERVER_URL=@jndi.naming.server.url@
 
# The implementation used for providing security credentials (Required)
SECURITY_CREDENTIAL_PROVIDER=oracle.retail.sim.common.security.CredentialStoreJndiCredentialProvider
 
# Credential provider parameters (Depends on credential provider)
SECURITY_USER_ALIAS=batch-user
 
# The maximum number of times to try to connect to the server.
# Should always be at least 2 to allow for server unexpected reconnects.
MAX_CONNECT_ATTEMPTS=2

Note:

Within configuration files (and, thus, in some of the examples from those following files), a # sign that precedes a value in the file signifies that what follows is a comment and is not being utilized as a setting.

Example 3-2 web-launch.properties

# SIM Web Launch Configuration

initializers=oracle.retail.sim.weblaunch.bootstrap.WebLaunchInitializer 
finalizers=

context.handler=oracle.retail.sim.weblaunch.core.DefaultWebLaunchContextHandler

token.codebase_url=@deploy.client.codebase.url@
token.jndi_url=@jndi.naming.server.url@

security.sso.enabled=@security.sso.enabled@
security.sso.header.user=OAM_REMOTE_USER
security.sso.token.expiration=3600
security.sso.token.encryption.provider=oracle.retail.sim.weblaunch.security.SimTokenEncryptionProvider
security.sso.token.key.generate=true
security.sso.token.key.alias=sso-token-key
security.sso.token.key.algorithm=HmacSHA256
security.sso.token.random.algorithm=SHA1PRNG
security.sso.token.cipher.algorithm=AES/CBC/PKCS5Padding
security.sso.token.cipher.key.size=128
security.sso.token.cipher.iv.length=16
security.sso.token.mac.algorithm=HmacSHA256
security.sso.token.mac.key.size=256
security.sso.token.mac.salt.length=32

Batch Configuration

Batch configuration files contains configuration settings for SIM batch programs. The batch configuration files are packaged in sim-batch.zip distribution.

batch.cfg

The batch.cfg file contains the following:

Example 3-3 batch.cfg File

# The number of threads that execute concurrently to get batch work done when      #SimBatch.executeBatchCallables is used.
BATCH_NUM_THREADS_IN_POOL=5

# Time in seconds to wait when checking the status of an asynchronous batch job
BATCH_ASYNC_DELAY=5

# The maximum number of times to check the status of an asynchronous batch job
BATCH_ASYNC_LIMIT=50

jndi.cfg

For details, see the section ”SIM JNDI Configuration.”

Jps-config.xml

This file contains identity store provider configuration.

For details, see the Oracle Retail Store Inventory Management Implementation Guide, section ”Oracle Software Security Assurance (OSSA)”.

Log4j.xml

This file is used for changing the logging level for SIM batch programs. For details, see the section ”Changing Logging Levels”.

Common Configuration

The configuration files which are common to both client code and server code.

Common configuration files are packaged in sim-common-resources.jar distribution.


Note:

If a configuration file is changed, all client side jars containing Java code must be signed with the same signature.

common.cfg

The following keys define the implementation to classes that instantiate objects in SIM through the factory pattern:

  • BO_FACTORY_IMPL

  • WSO_FACTORY_IMPL

  • DEO_FACTORY_IMPL

  • CLIENT_COMMAND_FACTORY_IMPL

  • CLIENT_SERVICE_FACTORY_IMPL

  • SERVER_SERVICE_FACTORY_IMPL

Where:

  • BO – Business Objects

  • WSO – Web Service Objects

  • DEO – Data Exchange Objects

The common.cfg file also includes server caching refresh rates for various services.

Example 3-4 common.cfg File

# These keys define the implementation to classes that instantiate objects in SIM via the factory pattern
# BO = Business Objects, WSO = Web Service Objects, DEO = Data Exchange Objects
BO_FACTORY_IMPL=oracle.retail.sim.common.business.BOFactoryImpl
CLIENT_COMMAND_FACTORY_IMPL=oracle.retail.sim.common.business.ClientCommandFactoryImpl
CLIENT_SERVICE_FACTORY_IMPL=oracle.retail.sim.service.core.ClientServiceFactoryImpl
SERVER_SERVICE_FACTORY_IMPL=oracle.retail.sim.service.core.ServerServiceFactoryImpl

# Default currency type for non-specified currency
CURRENCY_DEFAULT_TYPE=USD
 
# Indicates the maximum number of lines that will be handled by authorization process at one time.
# In other words, authorization of stock count will loop on total line items and only process 5000
# line items within each loop.
STOCK_COUNT_MAX_AUTH_LINES=5000
 
# These mask factories determine the implementation responsible for instantiating the money, phone masks (parsing/formatting).
MONEY_MASK_FACTORY=oracle.retail.sim.common.format.MoneyMaskFactoryImpl
PHONE_MASK_FACTORY=oracle.retail.sim.common.format.PhoneMaskFactoryImpl
 
# The implementation of the credential store provider
CREDENTIAL_STORE_PROVIDER=oracle.retail.sim.common.security.JpsCredentialStoreProvider
 
# Map name used for accessing the credential store
CREDENTIAL_STORE_MAP=oracle.retail.sim
 
# Cache Refresh Rates Of Commonly Cached Information.
# Value is in milliseconds. 30000=30 seconds  300000=5 minutes  3600000=1 hour
# The default setting is 1 hour unless configured here
 
# Reason Codes for inventory adjustments cached on handheld server and PC Client (milliseconds)
REFRESH_RATE_ACTIVE_INV_ADJ_REASON=3600000
 
# System configuration values cached on handheld server, main server and PC client (milliseconds)
REFRESH_RATE_CONFIG=3600000
 
# Context Types cached on handheld server, main server and PC client (milliseconds)
REFRESH_RATE_CONTEXT_TYPE=3600000
 
# Return reason code  for a return to finisher cached on the handheld server and PC client (milliseconds)
REFRESH_RATE_FINISHER_RETURN_REASON=3600000
 
# AGSN Item Ticket formats cached on the handheld server and PC client (milliseconds)
REFRESH_RATE_AGSN_TICKET_FORMAT=3600000
 
# Regular Item Ticket Formats cached on the handheld server and PC client (milliseconds)
REFRESH_RATE_ITEM_TICKET_FORMAT=3600000
 
# Regular Item Ticket Types cached on the handheld server and PC client (milliseconds)
REFRESH_RATE_ITEM_TICKET_TYPE=3600000
 
# Item merchandise hierarchy (depts) cached on handheld server, main server and PC client (milliseconds)
REFRESH_RATE_MERCH_HIERARCHY=3600000
  
# Non-Sellable Quantity Types or Sub-buckets cached on handheld server, main server and PC client (milliseconds) 
REFRESH_RATE_NONSELLABLE_QTY_TYPE=3600000 
  
# Price history cached on handheld server and PC client (milliseconds) 
REFRESH_RATE_PRICE_HISTORY=3600000 
  
# Shelf label formats cached on the handheld server and PC client (milliseconds) 
REFRESH_RATE_SHELF_LABEL_FORMAT=3600000 
  
# Store configuration cached on handheld server, main server and PC client (milliseconds) 
REFRESH_RATE_STORE=3600000 
  
# Suppliers cached on handheld server and PC client (milliseconds) 
REFRESH_RATE_SUPPLIER=3600000 
  
# Return reason codes for supplier returns on handheld server and PC client (milliseconds) 
REFRESH_RATE_SUPPLIER_RETURN_REASON=3600000 
  
# Translations cached on handheld server and main server (milliseconds) 
REFRESH_RATE_TRANSLATION=3600000 
  
# UDA Details cached on PC client (milliseconds) 
REFRESH_RATE_UDA_DETAILS=3600000 
  
# UIN Container details cached on handheld server (milliseconds) 
REFRESH_RATE_UIN_CONTAINER=3600000 
  
# UOM Conversion Factor cached on handheld server and main server (milliseconds) 
REFRESH_RATE_UOM_CONVERSION=3600000 
  
# Warehouses cached on handheld server and PC client (milliseconds) 
REFRESH_RATE_WAREHOUSE=3600000 
  
# Return reason codes for warehouse returns on handheld server and PC client (milliseconds) 
REFRESH_RATE_WAREHOUSE_RETURN_REASON=3600000 
  
# Differentiator information cached on handheld server (milliseconds) 
REFRESH_RATE_WIRELESS_ITEM_DIFF=3600000 

PC Client Configuration

Client configuration files are package in sim-client-resources.jar distribution.


Note:

If a configuration file is changed, all client side jars containing Java code must be signed with the same signature.

client.cfg

The client.cfg file contains the following:

  • STARTUP_DISPLAY – this class must be StartupDisplayer or a sub-class of StartupDisplayer.

  • INITIALIZERS – comma-delimited class name list that is executed upon SIM PC client startup.

  • NATIVE.COMMANDS – comma-delimited list of native commands that display in stats area.

  • CLIENT_LOCK_PORT – the port used to lock the client application.

  • SHUTDOWN – shutdown command line.

  • Screen components used by application main frame:

    • GUI.APPFOLDER

    • GUI.MAINFRAME

    • GUI.GLOBALBAR

    • GUI.APPTOOLBAR

    • GUI.LOGGERFACTORY

    • GUI.STATUSDISPLAYER

    • GUI.DEFAULT_SCREEN

    • GUI.EXIT

      • NORMAL

      • SPIN

      • DISSOLVE

      • SHRINK

  • REPORTING_SERVICE_BROWSER_LAUNCHER –Reports Browser launcher.

  • REPORTS_EXECUTABLE – this value holds the executable for displaying the reports portal.

  • HELP_EXECUTABLE – this value holds the executable for displaying help.

Example 3-5 client.cfg File

# This class must be StartupDisplayer or a sub-class of StartupDisplayer
STARTUP_DISPLAY=oracle.retail.sim.closed.application.StartupDisplayer
 
# A comma delimited class name list that is executed upon SIM PC client startup
# Each entry must be an implementation of oracle.retail.sim.closed.common.Initializer.
INITIALIZERS=oracle.retail.sim.closed.bootstrap.SimClientInitializer
 
# Comma delimited list of native commands that will show up in stats area.
NATIVE.COMMANDS=
 
# The port which is used to lock the client application.  This port will be checked on each client invocation to make sure only one instance of this application is running.
CLIENT_LOCK_PORT=51803
 
# Shutdown command line
SHUTDOWN=RESTART_CLIENT
 
# Screen components used by application main frame
GUI.APPFOLDER=sim
GUI.MAIN_FRAME=oracle.retail.sim.closed.swing.sim.SimApplicationFrame
GUI.GLOBALBAR=oracle.retail.sim.shared.swing.core.SimStatusBar
GUI.APPTOOLBAR=oracle.retail.sim.shared.swing.core.SimToolbar
GUI.LOGGER_FACTORY=oracle.retail.sim.shared.swing.core.SimLoggerFactory
GUI.STATUS_DISPLAYER=oracle.retail.sim.shared.swing.core.SimStatusDisplayer
GUI.DEFAULT_SCREEN=oracle.retail.sim.shared.swing.login.MainScreen
GUI.WRAPPER_FACTORY=oracle.retail.sim.client.core.ClientWrapperFactoryImpl
GUI.NAV_LISTENER_FACTORY=oracle.retail.sim.client.core.SimScreenNavigationListenerFactoryImpl
 
# Screen Exit Options are NORMAL, SPIN, DISSOLVE, SHRINK
GUI.EXIT=NORMAL
 
# Reports Browser launcher
REPORTING_SERVICE_BROWSER_LAUNCHER=oracle.retail.sim.shared.report.launcher.bipublisher.BIPublisherBrowserReportLauncher
 
# This value holds the executable for displaying the reports portal.
# Need a different executable for Linux
REPORTS_EXECUTABLE=cmd /c start {0}
 
# This value holds the executable for displaying help.
# Available parameters: {0} - the absolute path of the URL which should display
#                             the help documentation.
HELP_EXECUTABLE=cmd /c start {0}

date.cfg

This file defines the date format configuration.

This file contains Java format pattern strings for several different types of dates defined in the system. These pattern strings follow the rules defined in Java for SimpleDateFormat. The key for the date is defined as language and country followed by the pattern key where xxXX is the two-letter ISO language code plus country code. Both language and country must be present. Additional language/country combinations can be added as desired. For example, enAU.entryDate is the entry format for dates in English for Australia.

The pattern keys are:

  • entryDate–used for date entry in calendar editor

  • shortDate–format for short length date - this is the most commonly used

  • mediumDate–format for medium length date

  • longDate–nearly complete date format

  • fullDate–fully written-out date format

  • monthPattern–formats month and day only

  • wirelessInput–defines entry for wireless device

  • wirelessOutput–defines the format of dates on the wireless device

  • wirelessDisplay–defines the exact text string to display to the user at the entry location

  • firstDayOfWeek – the first day of the week to display on calendar pop-up

Editing date.cfg

The file must be changed and then placed in the classpath.

Valid days of week values are:

  • 1 = Sunday

  • 2 = Monday

  • 3 = Tuesday

  • 4 = Wednesday

  • 5 = Thursday

  • 6 = Friday

  • 7 = Saturday

The enUS represents the language (en=english) and country (US=United States) of the user logged in. There are examples for many other countries already provided in the date.cfg file.

Example 3-6 date.cfg File

# Date formats are in standard JAVA pattern definition strings
# First Day of Week: 1 = Sunday....7 = Saturday
 
# ENGLISH - UNITED STATES
#enUS.firstDayOfWeek=1
#enUS.entryDate=M/d/yy
enUS.shortDate=M/d/yyyy
#enUS.mediumDate=MMM d, yyyy
#enUS.longDate=MMMM d, yyyy
#enUS.fullDate=EEEE, MMMM d, yyyy
enUS.monthPattern=MM-dd
enUS.wirelessInput=MM-dd-yy,MMddyy
enUS.wirelessOutput=MM-dd-yy
enUS.wirelessDisplay=mm-dd-yy

# FRENCH - BELGIUM
#frBE.firstDayOfWeek=1
#frBE.entryDate=d/MM/yy
#frBE.shortDate=d/MM/yy
#frBE.mediumDate=dd-MMM-yyyy
#frBE.longDate=d MMMM yyyy
#frBE.fullDate=EEEE d MMMM yyyy
frBE.monthPattern=MM-dd
frBE.wirelessInput=dd-MM-yy,ddMMyy
frBE.wirelessOutput=dd-MM-yy
frBE.wirelessDisplay=dd-mm-yy

jdni.cfg

For details, see section ”SIM JNDI Configuration.”

Log4j.xml

This file is used for changing the logging level for SIM client programs. For details, see section ”Changing Logging Levels.”

Server Configuration

SIM server configuration files are packaged in sim-server-resources.jar distribution.

ldap.cfg

This file contains various configuration parameters for connecting to an LDAP server. The SIM installer should have set all values.

Additional context properties (specific to the context factory implementation) may be set if needed, see the comments for examples.

The configuration allows for customizations of the LDAP schema for object context, object class names, attribute names.

Example 3-7 ldap.cfg File

# LDAP Configuration

# Connection factory implementationconnection.factory=oracle.retail.sim.server.dataaccess.LdapThreadLocalConnectionFactory
 
# Initial context factory implementation (java.naming.factory.initial)initial.context.factory=com.sun.jndi.ldap.LdapCtxFactory

# Provider URL (java.naming.provider.url)
provider.url.primary=@ldap.url@�provider.url.backup=�

�# Security authentication (java.naming.security.authentication)�security.authentication=simple��# Security protocol (java.naming.security.protocol)�security.protocol=��# Security credentials�security.user.alias=ldap-user��# Connection pool (com.sun.jndi.ldap.connect.pool)�connection.pool=true��# Additional context environment properties (context.env.*)�#context.env.com.sun.jndi.ldap.connect.timeout=�#context.env.com.sun.jndi.ldap.read.timeout=��# Base DN�base.dn=@ldap.base.dn@��# Store schema�schema.store.context=cn=SIMStores�schema.store.objectclass=simStore�schema.store.attribute.store.id=storeId��# Role schema�schema.role.context=cn=SIMRoles�schema.role.objectclass=simRole�schema.role.attribute.role.name=roleName�schema.role.attribute.type=type�schema.role.attribute.description=description��# User schema�schema.user.context=cn=Users�schema.user.objectclass=simUser�schema.user.attribute.username=uid�schema.user.attribute.superuser=superUser�schema.user.attribute.status=empStatus�schema.user.attribute.language=preferredLanguage�schema.user.attribute.country=preferredCountry�schema.user.attribute.first.name=givenName�schema.user.attribute.middle.name=middleName�schema.user.attribute.last.name=sn�schema.user.attribute.email=mail�schema.user.attribute.phone=telephoneNumber�schema.user.attribute.external.id=externalId�schema.user.attribute.supervisor=supervisor�schema.user.attribute.comments=description�schema.user.attribute.create.date=createTimestamp�schema.user.attribute.start.date=startTimestamp�schema.user.attribute.end.date=endTimestamp�schema.user.attribute.default.store=defaultStore�schema.user.attribute.user.stores=userStores��# User store schema�schema.user.store.context=cn=Users�schema.user.store.objectclass=simUser�schema.user.store.attribute.username=uid�schema.user.store.attribute.user.stores=userStores��# User role schema�schema.user.role.context=cn=Users�schema.user.role.objectclass=simUserRole�schema.user.role.attribute.role.name=roleName�schema.user.role.attribute.user.role=userRole�schema.user.role.attribute.user.role.stores=userRoleStores�schema.user.role.attribute.start.date=startTimestamp�

schema.user.role.attribute.end.date=endTimestampserver.cfg

The server.cfg file contains server side configurations. For details, see the example server.cfg file.

Example 3-8 server.cfg File

# INITIALIZERS: A comma delimited class name list that needs to be executed when the #sim server starts.
# Each entry must implement oracle.retail.sim.common.core.Initializer.
INITIALIZERS=oracle.retail.sim.server.bootstrap.SimServerInitializer,oracle.retail.sim.server.bootstrap.IntegrationServiceServerInitializer,oracle.retail.sim.intrib.bootstrap.IntegrationRibServerInitializer
 
# FINALIZERS: A comma delimited class name list that needs to be executed when the sim #server stops.

# FINALIZERS: A comma delimited class name list that needs to be executed when the sim #server stops.
# Each entry must implement oracle.retail.sim.common.Finalizer.
# For an example of what could be done, see oracle.retail.sim.tests.TestFinalizer�
FINALIZERS=oracle.retail.sim.server.bootstrap.SimServerFinalizer
 
# Enable when deployed in a clustered environment to allow for cluster specific features.�
CLUSTERED=@deploy.clustered@
 
# The name the application's DataSource is registered under.�
DB_JNDI_NAME=jdbc/SimDataSource�
 
# The name the application's MailSession is registered under.�
MAIL_JNDI_NAME=mail/SimMailSession�
 
# Time in seconds to wait on database locks�
DB_LOCK_WAIT_TIME=60�
DB_LOCK_WAIT_TIME_STOCK_COUNT=300�
 
# Maximum number of parameters allowed in a database batch statement�
DB_BATCH_MAX_PARAM=5000�
 
# Default database fetch size for batch processes�
BATCH_FETCH_LIMIT_DEFAULT=100�
 
# These keys define the implementation to classes that instantiate objects in SIM via #the factory pattern�
DEO_FACTORY_IMPL=oracle.retail.sim.server.integration.deo.DEOFactoryImpl�
DAO_FACTORY_IMPL=oracle.retail.sim.server.dataaccess.DAOFactoryImpl�
EXTERNAL_SERVICE_FACTORY_IMPL=oracle.retail.sim.extservice.core.ExternalServiceFactoryImpl�
RSL_DAO_FACTORY_IMPL=oracle.retail.sim.extservice.rsl.dataaccess.RSLDAOFactoryImpl�
COMMAND_FACTORY_IMPL=oracle.retail.sim.server.business.CommandFactoryImpl�
RECORD_FACTORY_IMPL=oracle.retail.sim.server.business.RecordFactoryImpl�
 
# These factories lookup appropriate message types, mappers, consumers, publishers, #and stagers for message processing�
MESSAGE_ENUM_FACTORY_IMPL=oracle.retail.sim.server.integration.SimMessageEnumFactoryImpl�
MESSAGE_MAPPER_FACTORY_IMPL=oracle.retail.sim.server.integration.SimMessageMapperFactoryImpl�
MESSAGE_CONSUMER_FACTORY_IMPL=oracle.retail.sim.server.integration.consumer.SimMessageConsumerFactoryImpl�
MESSAGE_STAGER_FACTORY_IMPL=oracle.retail.sim.server.integration.stager.SimMessageStagerFactoryImpl�
MESSAGE_PUBLISHER_FACTORY_IMPL=oracle.retail.sim.server.integration.publisher.SimMessagePublisherFactoryImpl�
 
# Server cache refresh rates. Time is in milliseconds. 30000=30 seconds 300000=5 minutes�
REFRESH_RATE_USER_AUTHENTICATION_CACHE=300000�
REFRESH_RATE_USER_AUTHORIZATION_CACHE=300000�
 
# The implementation of the internal security password encryption provider�
INTERNAL_PASSWORD_ENCRYPTION_PROVIDER=oracle.retail.sim.server.security.SimPasswordEncryptionProvider�
# The algorithm name for random number generation used for internal security�
INTERNAL_PASSWORD_RANDOM_ALGORITHM=SHA1PRNG�
# The credential store alias for accessing the internal security password encryption key�
INTERNAL_PASSWORD_KEY_ALIAS=internal-password-key�
# Enables initial automatic generation of the internal security password encryption key�
INTERNAL_PASSWORD_KEY_GENERATE=true�
# The algorithm name for internal security password encryption key generation�
INTERNAL_PASSWORD_KEY_ALGORITHM=HmacSHA256�
# The MAC algorithm name used for internal security password encryption�
INTERNAL_PASSWORD_MAC_ALGORITHM=HmacSHA256�
# The size of the MAC encryption key used for internal security password encryption (bits)�
INTERNAL_PASSWORD_MAC_KEY_SIZE=256�
# The length of the salt generated for internal security password encryption (bytes)�
INTERNAL_PASSWORD_MAC_SALT_LENGTH=32�

# This corresponds to a row in the message processing system configuration table�
MPS_CONFIG_ID=1�

Wireless Configuration

SIM wireless configuration files are packaged in sim-wireless.zip distribution.

wireless.cfg

This file contains configuration used by the Wireless Server:

  • INITIALIZERS_CLIENT – comma-delimited class name list that is executed upon wireless client startup.

  • INITIALIZERS_SERVER – comma-delimited class name list that is executed upon wireless server startup.

  • Wireless Port – port the wireless server runs on, and clients connect to.

Example 3-9 wireless.cfg File

# INITIALIZERS_CLIENT: A comma delimited class name list that is executed upon wireless client startup
# Each entry must be an implementation of oracle.retail.sim.common.core.Initializer.
INITIALIZERS_CLIENT=oracle.retail.sim.wireless.bootstrap.SimWirelessClientInitializer
 
# INITIALIZERS_SERVER: A comma delimited class name list that is executed upon wireless server startup
# Each entry must be an implementation of oracle.retail.sim.common.core.Initializer.
INITIALIZERS_SERVER=oracle.retail.sim.wireless.bootstrap.SimWirelessServerInitializer
 
# Wireless Port - This is the port that the wireless server runs on, and clients connect to.
PORT=@wireless.port@

jndi.cfg

For details, see ”SIM JNDI Configuration.”

Jps-config.xml

This file contains identity store provider configuration.

For details, see the Oracle Store Inventory Management Implementation Guide, section ”Oracle Software Security Assurance (OSSA)”.

Log4j.xml

This file is used for changing the logging level for SIM wireless programs. For details, see the section ”Changing Logging Levels”.

External Service Integration Configuration

External services configuration files contain configurations for SIM to be able to send requests to external services. External service configuration files are packaged in sim-ext-services-resources.jar distribution.

ext-services.cfg

An example of ext-services.cfg is as follows:

Example 3-10 ext-services.cfg File

# RpmExternalServices
RpmExternalServices.user.alias=rsl-rpm-user

# BIPublisherSchedulerExternalServices
BIPublisherScheduleExternalServices.user.alias=bip-user
 
# BIPublisherExternalServices
BIPublisherExternalServices.wsdl.url=@integration.bip.wsdl.url@
BIPublisherExternalServices.user.alias=@integration.bip.user.alias@
 
# ManifestExternalServices
ManifestExternalServices.wsdl.url=@integration.manifest.wsdl.url@
ManifestExternalServices.decorator=@integration.manifest.decorator@
ManifestExternalServices.user.alias=manifest-user
ManifestExternalServices.client.keystore.alias=manifest-client-keystore@
 
ManifestExternalServices.client.key.alias=manifest-client-key
ManifestExternalServices.server.key.name=@integration.manifest.server.key.name@
 
# FulfillmentOrderExternalServices
FulfillmentOrderExternalServices.wsdl.url=@integration.oms.wsdl.url@
FulfillmentOrderExternalServices.decorator=@integration.oms.decorator@
FulfillmentOrderExternalServices.user.alias=oms-user
 
FulfillmentOrderExternalServices.client.keystore.alias=oms-client-keystore
FulfillmentOrderExternalServices.client.key.alias=oms-client-key
FulfillmentOrderExternalServices.server.key.name=@integration.oms.server.key.name@

jndi_providers.xml

This file contains the remote service lookup configurations to Retail Service Layer (RSL) to RMS (Retail Merchandise System) and RPM (Oracle Retail Price Management).

The configurable entries are configured by SIM installer at SIM installation. The SIM Installer also creates the security authentication wallet file and deploys to SIM application server.

Example 3-11 jndi_providers.xml

<?xml version="1.0" ?>
<!-- This file is used for RSL only.  -->
<ejb_context_overrides>

    <!-- rslForRpm -->
    <provider app="rpm" map-name="oracle.retail.sim" 
csm-wallet="@security.credstore.path@">
        <encrypted-context-property name="java.naming.security.principal" key="rsl-rpm-user" value-type="PC_USERNAME"/>
        <encrypted-context-property name="java.naming.security.credentials" key="rsl-rpm-user" value-type="PC_PASSWORD"/>
        <context-property name="java.naming.provider.url" value="@integration.rpm.rsl.url@"/>
        <context-property name="java.naming.factory.initial" value="weblogic.jndi.WLInitialContextFactory"/>
    </provider>
 
    <!-- rslforRms -->
    <provider app="rms" map-name="oracle.retail.sim" csm-wallet="@security.credstore.path@">
        <encrypted-context-property name="java.naming.security.principal" key="rsl-rms-user" value-type="PC_USERNAME"/>
        <encrypted-context-property name="java.naming.security.credentials" key="rsl-rms-user" value-type="PC_PASSWORD"/>
        <context-property name="java.naming.provider.url" value="@integration.rms.rsl.url@"/>
        <context-property name="java.naming.factory.initial" value="weblogic.jndi.WLInitialContextFactory"/>
    </provider>
</ejb_context_overrides>

Note:

See the Oracle Retail Store Inventory Management Installation Guide for wallet location and configuration details.

service_flavors.xml

This file is one of the Retail Platform's service factory configuration files which specifies the service request context (or flavors), for example, from a client application or the request is originated from a process executing on the server.

The services_<application>.xml file (for example, services_ribclient.xml, services_rsl.xml) specifies instructions to the Retail Platform's service factory indicating which type of the service to use based on the context of the service request.

By default, this file should not be modified.

Example 3-12 service_flavors.xml

<?xml version="1.0" encoding="UTF-8"?>
  <services-config>
     <flavors set="client">
         <!-- Default flavor precedence and implementation -->
         <flavor name="ejb" locator="com.retek.platform.service.EjbServiceLocator" remote-suffix="Remote" home-suffix="RemoteHome" />
        <flavor name="rpmejb" locator="com.retek.rsl.rpm.service.RpmRslEjbServiceLocator" remote-suffix="Remote"/>
        <!--flavor name="core" locator="com.retek.platform.service.SimpleServiceLocator" suffix="Impl"/-->
         <flavor name="file" locator="com.retek.platform.service.SimpleServiceLocator" prefix="File" />
         <flavor name="offline" locator="com.retek.platform.service.SimpleServiceLocator" prefix="Offline" />
     </flavors>
     <flavors set="server">
         <!-- Default flavor precedence and implementation -->
        <!-- Default flavor precedence and implementation -->
        <flavor name="rpmejb" locator="com.retek.rsl.rpm.service.RpmRslEjbServiceLocator" remote-suffix="Remote"/>
         <flavor name="java" locator="com.retek.platform.service.SimpleServiceLocator" suffix="Java" />
         <flavor name="ejblocal" locator="com.retek.platform.service.EjbServiceLocator" remote-suffix="Local" home-suffix="LocalHome" jndi-name-suffix="Local" />
         <flavor name="core" locator="com.retek.platform.service.SimpleServiceLocator" suffix="Impl" />
     </flavors>
 </services-config>

services_rsl.xml

The file, services_rsl.xml is the Retail Service Layer (RSL) service factory configuration file. It specifies the RSL application's services interfaces and their associated implementations. Both RSL forRPM services and RSLForRMS services are included in this file.

This file should not be modified.

Example 3-13 services_rsl.xml

 
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file contains entries in servcies_rsl.xml from RSLforRPMClient and RSLforRMSClient --> 
<services-config>
<customizations>
        <!-- rslForRpm -->
        <interface package="com.retek.platform.service" app="rpm">
            <impl package="com.retek.platform.service.impl" />
        </interface>
           <interface package="com.retek.rsl.rpm" app="rpm">
           </interface>
                <interface package="com.retek.rsl.rpm" app="rpm">
                  <impl package=""/>
           </interface>
           <!-- rslForRms -->
        <interface package="com.retek.rsl.rms.service" app="rms">
            <impl package="" />
        </interface>
        <interface package="com.retek.platform.service" app="rms">
            <impl package="com.retek.platform.service.impl" />
        </interface>
</customizations>
</services-config>

RIB Integration Configuration

RIB integration configuration files contain configurations for SIM integrates with Retail Products via Retail Integration Bus. RIB configuration files are packaged in sim-int-rib-resources.jar distribution.

remote_service_locator_info_ribclient.xml

This file contains the remote service lookup configuration to invoke RIB remote EJBs for publishing messages to RIB.

The SIM installer configures the configurable entries at SIM installation time. The SIM Installer also creates the security authentication wallet file and deploys to the SIM application server.

Example 3-14 remote_service_locator_info_ribclient.xml

<?xml version="1.0" ?>
<remote_service_locator_info>
        <!-- This is for JNDI  -->
        <provider id="rib-sim" map-name="oracle.retail.sim" csm-wallet="@security.credstore.path@" >
                        <context-property name="java.naming.factory.initial" value="weblogic.jndi.WLInitialContextFactory" />
                        <context-property name="java.naming.provider.url" value="@integration.rib.url@" />
                       <encrypted-context-property name="java.naming.security.principal" key="rib-user" value-type="PC_USERNAME" />
                <encrypted-context-property name="java.naming.security.credentials" key="rib-user" value-type="PC_PASSWORD" />
        </provider>
  </remote_service_locator_info>
 
 
where 
@security.credstore.path@:  The location where the security authentication wallet file is located

@integration.rib.url@: The RIB-SIM server's JNDI URL.

For example:
t3://rib-sim-serverxxxx:19106
Or 
t3://rib-sim-serverxxxx:19106/rib-sim

Note:

See the Oracle Retail Store Inventory Management Installation Guide for wallet location and configuration details.

retail_service_config_info_ribclient.xml

This file is an RIB integration-related service factory configuration file. It specifies the RIB application's interfaces and their associated implementations.

By default, this file should not be modified.

Example 3-15 retail_service_config_info_ribclient.xml

<?xml version="1.0" encoding="UTF-8"?>
<retail_service_config_info>
<!-- POJO services listing -->
<pojo-service-config>
<interface package="com.retek.rib.binding.publisher">
<impl  package="com.retek.rib.binding.publisher.impl" suffix="Impl" />
</interface>
</pojo-service-config>
<!-- EJB services listing -->
<remote-ejb-service-config>
<interface package="com.retek.rib.app.messaging.publisher.service">
<impl package="com.retek.rib.app.messaging.publisher.service.impl" remote-bean-prefix="" remote-bean-suffix="Remote" remote-home-prefix="" remote-home-suffix="RemoteHome" remote-service-locator-info-ref-id="rib-sim" />
 </interface>
 </remote-ejb-service-config>
</retail_service_config_info>

injectors.xml

This file contains mappings for RIB message injector handler class and RIB incoming message family/type.

By default, this file should not be modified.

Example 3-16 injectors.xml

 
<?xml version="1.0" encoding="UTF-8"?>
 
<injector_config>
<family name="asnin">
<injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
<type>asnincre</type>
<type>asnindel</type>
<type>asninmod</type>
</injector>
</family>
        <family name="diffs">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>diffcre</type>
            <type>diffdel</type>
            <type>diffmod</type>
        </injector>
    </family>
<family name="fulfilord" drop-messages-of-types="fulfilordpocre,fulfilordtsfcre,fulfilordapprdel">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>fulfilordstdlvcre</type>
            <type>fulfilordreqdel</type>
        </injector>
    </family>

    <family name="items">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>itembomcre</type>
            <type>itembomdel</type>
            <type>itembommod</type>
            <type>itemcre</type>
            <type>itemdel</type>
            <type>itemhdrmod</type>
            <type>itemtcktcre</type>
            <type>itemtcktdel</type>
            <type>itemtcktmod</type>
            <type>itemsupctycre</type>
            <type>itemsupctydel</type>
            <type>itemsupctymod</type>
            <type>itemsupcre</type>
            <type>itemsupdel</type>
            <type>itemsupmod</type>
            <type>itemupccre</type>
            <type>itemupcdel</type>
            <type>itemupcmod</type>
            <type>iscmfrcre</type>
            <type>iscmfrdel</type>
            <type>iscmfrmod</type>
            <type>iscdimcre</type>
            <type>iscdimdel</type>
            <type>iscdimmod</type>
            <type>itemimagecre</type>
            <type>itemimagemod</type>
            <type>itemimagedel</type>
            <type>itemudadatecre</type>
            <type>itemudadatedel</type>
            <type>itemudadatemod</type>
            <type>itemudaffcre</type>
            <type>itemudaffdel</type>
            <type>itemudaffmod</type>
            <type>itemudalovcre</type>
            <type>itemudalovdel</type>
            <type>itemudalovmod</type>
            <type>relitemheadcre</type>
            <type>relitemheadmod</type>
            <type>relitemheaddel</type>
            <type>relitemdetcre</type>
            <type>relitemdetmod</type>
            <type>relitemdetdel</type>
        </injector>
</family>
<family name="itemloc">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>itemloccre</type>
            <type>itemlocmod</type>
            <type>itemlocdel</type>
            <type>itemlocreplmod</type>
        </injector>
    </family>
 <family name="merchHier" drop-messages-of-types="divisioncre,divisionmod,divisiondel,groupcre,groupmod,groupdel">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>deptcre</type>
            <type>deptmod</type>
            <type>deptdel</type>
            <type>classcre</type>
            <type>classmod</type>
            <type>classdel</type>
            <type>subclasscre</type>
            <type>subclassmod</type>
            <type>subclassdel</type>
        </injector>
    </family>
        <family name="order">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>pocre</type>
            <type>podel</type>
            <type>podtlcre</type>
            <type>podtldel</type>
            <type>podtlmod</type>
            <type>pohdrmod</type>
        </injector>
    </family>
        <family name="prmprcchg">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>multibuypromocre</type>
            <type>multibuypromodel</type>
            <type>multibuypromomod</type>
            <type>prmcnlitemloccre</type>
        </injector>
     </family>
   <family name="clrprcchg">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>clrprcchgcre</type>
            <type>clrprcchgdel</type>
            <type>clrprcchgmod</type>
        </injector>
    </family>
        <family name="regprcchg">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>regprcchgcre</type>
            <type>regprcchgdel</type>
            <type>regprcchgmod</type>
        </injector>
    </family>
   <family name="rtvreq">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>rtvreqcre</type>
            <type>rtvreqmod</type>
            <type>rtvreqdel</type>
            <type>rtvreqdtlcre</type>
            <type>rtvreqdtldel</type>
            <type>rtvreqdtlmod</type>
        </injector>
    </family>
 <family name="seeddata">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>difftypecre</type>
            <type>difftypedel</type>
            <type>difftypemod</type>
        </injector>
    </family>
 <family name="sostatus">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>sostatuscre</type>
        </injector>
</family>
 <family name="stockorder">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>socre</type>
            <type>sodtlcre</type>
            <type>sodtldel</type>
            <type>sodtlmod</type>
            <type>sohdrdel</type>
            <type>sohdrmod</type>
        </injector>
    </family>
<family name="stores" drop-messages-of-types="storedtlcre,storedtlmod,storedtldel">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>storecre</type>
            <type>storedel</type>
            <type>storemod</type>
        </injector>
    </family>
<family name="vendor">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>vendoraddrcre</type>
            <type>vendoraddrdel</type>
            <type>vendoraddrmod</type>
            <type>vendorcre</type>
            <type>vendordel</type>
            <type>vendorhdrmod</type>
            <type>vendoroucre</type>
            <type>vendoroudel</type>
        </injector>
    </family>
<family name="wh" drop-messages-of-types="whdtlcre,whdtlmod,whdtldel">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>whcre</type>
            <type>whdel</type>
            <type>whmod</type>
        </injector>
    </family>
 <family name="rcvunitadj">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>rcvunitadjcre</type>
            <type>rcvunitadjmod</type>
        </injector>
    </family>
 <family name="dlvyslt">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>dlvysltcre</type>
            <type>dlvysltmod</type>
            <type>dlvysltdel</type>
        </injector>
    </family>
 <family name="partner">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>partnercre</type>
            <type>partnermod</type>
            <type>partnerdel</type>
            <type>partnerdtlcre</type>
            <type>partnerdtlmod</type>
            <type>partnerdtldel</type>
        </injector>
    </family>
 <family name="udas">
        <injector class="oracle.retail.sim.intrib.core.SimMessageRibInjector">
            <type>udahdrcre</type>
            <type>udahdrdel</type>
            <type>udahdrmod</type>
            <type>udavalcre</type>
            <type>udavaldel</type>
            <type>udavalmod</type>
        </injector>
    </family>
</injector_config>

Port Configuration

The SIM PC and handheld clients require a number of ports to be open on the SIM server in order to communicate. That means these ports will have to be opened on any firewalls between the SIM clients and the SIM server.

The following types of ports are required to be open by SIM:

  • WLS HTTP port (to download the SIM client)

  • WLS RMI ports (to make RMI calls from the SIM client to the SIM server)

  • Wavelink server port (for the handheld devices to communicate with the Wavelink server)

The Wavelink port is defined in wavelink-startup.sh and wireless_services.cfg. See the "Wireless Server Port in wavelink-startup.sh and wireless_services.cfg" section of the "SIM Configuration Files" appendix of the Oracle Retail Store Inventory Management Installation Guide for more information.

The Weblogic Application Server controls the HTTP and RMI ports. The HTTP port is a single port, but the RMI ports are defined as a range of ports. These port numbers can be changed if necessary. Refer to the following documentation for descriptions and instructions on how to change the ports:

Configuring the Transaction Timeout for SIM

This section describes how to change settings for transaction timeout.

A transaction timeout is the maximum duration, in seconds, for transactions on the application server. If the specified amount of time expires, the transaction is automatically rolled back.

The WebLogic Server EJB container automatically sets the transaction timeout if a timeout value is not defined in the deployment descriptor. The container uses the value of the Timeout Seconds configuration parameter which has default value of 30 seconds.

The default transaction timeout settings may not be sufficient for some of SIM's processes, especially batch processes.

To change the transaction timeout setting on SIM domain server, open the WebLogic Server Console, go to the JTA page for the domain SIM is installed in, and change the value in the Timeout Seconds field.

In addition to change transaction timeout at domain level, user can also modify SIM EJB deployment descriptor file to set transaction timeout on EJB level. SIM deployment descriptor (weblogic-ejb-jar.xml) has specified transaction timeout settings for following EJBs:

Example 3-17 weblogic-ejb-jar.xml

        <weblogic-enterprise-bean>
                 <ejb-name>BatchBean</ejb-name>
                <transaction-descriptor>
                <trans-timeout-seconds>3600</trans-timeout-seconds>
               </transaction-descriptor>
               </weblogic-enterprise-bean>

               <weblogic-enterprise-bean>
                <ejb-name>MpsCoordinatorBean</ejb-name>
                <transaction-descriptor>
                <trans-timeout-seconds>300</trans-timeout-seconds>
               </transaction-descriptor>
               <enable-call-by-reference>true</enable-call-by-reference>
               </weblogic-enterprise-bean>

               <weblogic-enterprise-bean>
               <ejb-name>MpsWorkerBean</ejb-name>
              <transaction-descriptor>
              <trans-timeout-seconds>3600</trans-timeout-seconds>
              </transaction-descriptor>
              <enable-call-by-reference>true</enable-call-by-reference>
              </weblogic-enterprise-bean>

             <weblogic-enterprise-bean>
             <ejb-name>StockCountBean</ejb-name>
             <transaction-descriptor>
            <trans-timeout-seconds>300</trans-timeout-seconds>
             </transaction-descriptor>
             <enable-call-by-reference>true</enable-call-by-reference>
            </weblogic-enterprise-bean>

            <weblogic-enterprise-bean>
            <ejb-name>StockCountLocationBean</ejb-name>
            <transaction-descriptor>
            <trans-timeout-seconds>300</trans-timeout-seconds>
            </transaction-descriptor>
            <enable-call-by-reference>true</enable-call-by-reference>
            </weblogic-enterprise-bean>
            <weblogic-enterprise-bean>
            <ejb-name>StockCountLineItemBean</ejb-name>
            <transaction-descriptor>
            <trans-timeout-seconds>300</trans-timeout-seconds>
            </transaction-descriptor>
            <enable-call-by-reference>true</enable-call-by-reference
            </weblogic-enterprise-bean>

Logging Information

One of the first places to look for information concerning a problem in SIM is in the log files. Stack traces and debugging information can be found within the log files.

The log files are configured to roll over once they reach a certain size (currently 10 MB). Once a log file reaches the configured size, it will be renamed (for example, sim.log will be renamed to sim.log.1) and new log messages will be written to a new file (for example, sim.log). If there are already rolled-over logs, they will be also be renamed for example, sim.log.1 becomes sim.log.2, sim.log.2 becomes sim.log.3, and so forth). Only ten files are kept. If ten files already exist and the current file rolls over, the oldest log file is deleted.

Default Location of Log Files

The following describes the default location of the server log files and the client log files.

Server Log Files

The server log file location can be changed by changing the value of the File parameter in the sim.appender appender log4j.xml file. See Configuration Files for log4j.xml locations.

Client Log Files

Client-side log files are put in a directory called log, which is put wherever user.dir is defined in your system. For example, if you launched the Web start client with Firefox, user.dir is the directory where Firefox is installed. This means (depending on where you have Firefox installed) your logs could be in: C:\Program Files\Mozilla Firefox\log\sim.log.

To find the location of user.dir, double-click on the status bar at the bottom of the SIM PC client to bring up the Client Information dialog. Click the Version tab; one of the entries in the table is for the System Property user.dir. The value in the Version column shows the location of user.dir on the current client's system.

Changing Logging Levels

Sometimes it is useful to change the amount of information that the SIM server logs. There are two ways to change logging levels: editing the log4j.xml file, or using the Oracle Enterprise Manager Application Server Control user interface.

Editing log4j.xml

It is possible to change the level of any logger in the log4j.xml file. It is also possible to add new loggers if you want a certain SIM class to log more information. For more detail about loggers and logging levels, see the Log4J documentation at http://logging.apache.org/log4j/2.x/index.html.


Note:

After changing a log level in log4j.xml the SIM server must be bounced before the change will take effect.

Activity Locking

Activity locking has been designed to be controlled from within SIM. The following example illustrates the logic of activity locking.

A user becomes involved with a warehouse delivery that includes containers with multiple items in containers; that is, a significant amount of back and forth processing between screen and server is occurring. From the GUI, a call is made to the activity lock that instructs the system that the user is working with the warehouse delivery. If some other user has the lock, the system asks the user whether he or she wishes to break it and take over. A yes response to the prompt implies that former owner of the lock left the lock dangling without a good reason (left to get lunch and so on). A no response to the prompt implies that the former owner of the lock continues to legitimately need it in place in order to finish processing.