Tuesday, June 10, 2008

Mobile Wireless Application Setup For Oracle Apps 11i & 12i

MWA Setup

This article will explain to you
a. Where the Mobile Web Apps config files are located
b. MWA Startup and Shutdown Scripts and how those are used
c. Directory Structure for MWA in both 11i and R12
d. How to develop and test your pages
e. Where the log files are created, and tips to debug MWA Applications

Configuration Files

· mwa.cfg: This file has information about the DBC file location, Log Dir Location, Telnet Port no Location, Error Logging Level etc.
This info will be used by Mobile Applications on runtime.

· default_key.ini: This file is used to map the keys of the mobile device to some specific functionality.
Use the default file if you don’t want to customize anything.

· deviceIP.ini: This file maps the configuration files and host name with the mobile device


MWA server start-up and shutdown:

· mwactl.sh: This file is used to start/stop the MWA listener on specific port.
Basically, if you develop and deploy a Mobile page into the instance, you have to bounce the MWA server by
stopping and starting the Listener at your port to see your changes.

Start/stopping Listener


Start:
mwactl.sh start

Stop :
mwactl.sh -login stop_force


File Location

Directory Structure in R11
$MWA_TOP/bin
$MWA_TOP/secure

Directory structure in R12
$INST_TOP/admin/scripts
$INST_TOP/admin/install


(eg)In R12, INST_TOP may look like:
/u01/appldev/DEV/inst/apps/DEV_w-oraap01


MWA GUI Client Setup

In order to simulate the Mobile Device on your PC, you have to do the following setup:

Step 1:
Create 2 directories say C:\MWA\lib and C:\MWA\log
Extract the files from the patch 4205328 into C:\MWA\lib

Step 2:
Download jdk1.1.8 from java.sun.com and place it in C:


Step 3:
Create a batch file say Start_MWA.bat with the following contents
set MWA_GUI_TOP=C:\MWA\
set JAVA_TOP=c:\jdk1.1.8

%JAVA_TOP%\bin\java -classpath %JAVA_TOP%\lib\classes.zip;%MWA_GUI_TOP%\lib\j4205328.zip oracle.apps.mwa.awt.client.StartGUI

Step 4:
Whenever you run this batch file, you must be able to see the GUI client for MWA



MWA Error Logging and Debugging:

When you develop and test mobile applications, you may need to write some logging information which will be useful in debugging.
There are different levels of Logging that can be set for obtaining more debug information.

The different Log level from highest to lowest is as follows:

    • fatal

    • error

    • warning

    • debug

    • trace


This logging information can be set using the “mwa.LogLevel” variable in mwa.cfg file.



How to write logging information?
While we code, we can call the APIs to log the information. The methods used for logging can be found in the following Java helper class.

oracle.apps.inv.utilities.server.UtilFns


For example, we can use the following code snippets and based on the log level set, we can find this information from the log files.

UtilFns.trace("#########Trace Level Logs#########");
UtilFns.log("#########Log level logs#########");
UtilFns.error("#####Error Level logs#########");


There are lot of other utility APIs available in this helper class (UtilFns.java) which can be used for various other aspects.


Example code snippet for error logging:

public void fieldEntered(MWAEvent mwaevent)

{

UtilFns.trace("Inside Field Entered");

ses = mwaevent.getSession();

String s = UtilFns.fieldEnterSource(ses);

// Prints the Current Bean's ID

UtilFns.trace("CustomFListener:fieldEntered:fldName = " + s);

}


In the above snippet, we print a message “Inside Field Entered” when the user enters any field in the Mobile Application

Also, we print the name of the field using the line

UtilFns.trace("CustomFListener:fieldEntered:fldName = " + s);

Please note that, the above log messages can be found only when the log level is set to “trace” in mwa.cfg file.



Where to look for log information?

The log files are located under $INST_TOP/logs (in R12).



Mainly we will be using the following log files to see our log files.

All the log files start with Telnet_port_no as a prefix.


Example log files for port no 10240:

[appldev@w-oraap01 logs]$ pwd

/u01/appldev/DEV/inst/apps/DEV_w-oraap01/logs

[appldev@w-oraap01 logs]$ ls -al 10240*

-rw-r--r-- 1 appldev dba 255626 Feb 8 13:28 10240.INV.log

-rw-r--r-- 1 appldev dba 83 Feb 8 13:26 10240.sta

-rw-r--r-- 1 appldev dba 154063 Feb 8 13:50 10240.system.log

-rw-r--r-- 1 appldev dba 3296 Feb 4 11:11 10240.WMS.log

[appldev@w-oraap01 logs]$



All the log information written using the “UtilFns” will be located under .INV.log

All the system level log like page names, parameter passed to PLSQL APIs, LOVs etc can be found under .system.log



Easiest way to look at log files:

Since the volume of information written in the log file is huge, it is tough to go through the entire file.

A simpler way which I used to find the log information is to run the command

tail -f 10240.INV.log


By doing so, you can see the updated log information as and when you click on the fields on mobile application.


HAPPY LEARNING !!!