Date post: | 23-Dec-2015 |
Category: |
Documents |
Upload: | thomasina-tyler |
View: | 215 times |
Download: | 1 times |
WSU Web Development
Overview
Browser
CICS
WEB
Open Edition DCE interface
Natural Server session
Natural Server session
Natural Server session
User T01Session
User TnnSession
User T03Session
User T02Session
Browser
Browser
Browser
Browser Web dispatcher
T
C
P
TCP
Web browser client
CICS webserver
Web dispatcher
Web ParseNatural Module
Web Send
Web Utils.
dataExec.
Overview
Templates
OverviewOverview
1 #IRESP (I4)1 #OCCURNO (I4)1 #RESULT (A253)1 #KEY (A50)
CALLNAT 'WEBPARSE' #IRESP #KEY #RESULT #OCCURNO
1 #DATA-AREA 2 #RESP1 3 #R1A (A15) INIT <'HTTP/1.0 200 OK'> 3 #R1Z (A2) INIT <H'0D25'> 2 #HDR1 3 #H1A (A24) INIT <'CONTENT-TYPE: TEXT/HTML'> 3 #H1Y (A2) INIT <H'0D25'> 3 #H1Z (A2) INIT <H'0D25'> 2 #MESS 3 #M1A (A45) INIT <'<TITLE>TESTATE1</TITLE><H1>TESTATE1:</H1><P>'> 3 #M1C (A250) 2 #END-DATA-AREA (A1)
CALL 'UTPWBSND' #IRESP #ILEN #DATA-AREA
Overview
1 #P4 (A128) INIT< '<body text="#000000" bgcolor="#E78CC6" ' - 'link="#0000EE" vlink="#551A8B" alink="#FF0000">'>1 #P7 (A37) INIT< '<p> This is text to display. <br><cen'>1 #P8 (A04) INIT<'ter>'>1 #P9 (A128) INIT< 'Enter Natural Pgm Name and Cl'>. . . .COMPRESS #P7 INTO #PARM LEAVING NO SPACECALLNAT 'WEBGEN' #IRESP #PARMCOMPRESS #P8 INTO #PARM LEAVING NO SPACECALLNAT 'WEBGEN' #IRESP #PARMCOMPRESS #P9 INTO #PARM LEAVING NO SPACECALLNAT 'WEBGEN' #IRESP #PARMCOMPRESS #P11 INTO #PARM LEAVING NO SPACECALLNAT 'WEBGEN' #IRESP #PARMCALL 'UTPWBSND' #IRESP
Overview
1 #TEMPLATE (A8) INIT<'GENERIC1'> 1 #CMD (A1) INIT<'A'> 1 #SLEN (I4) 1 #WSTRUCT 2 #P0 (A4) INIT<'&P0='> 2 #WORK (A253)END-DEFINE
COMPRESS #PVALUE '#$@' INTO #WORK LEAVING NO SPACEEXAMINE #WORK FOR '#$@' GIVING POSITION IN #SLENIF #SLEN = 0 #SLEN = 253ELSE SUBTRACT 1 FROM #SLENADD 4 TO #SLENCALL 'UTPWBTPL' #PRESP #CMD #TEMPLATE #P0 #SLEN
Overview
Utilities:some examples
Sag editor usage… write, display, skip, at top, at end, etc.
USR modules: SYSBUS, and Environment variables (E.G. UDB).
Caching to TSQ instead of GDAs or AIVs.
Query DCE groups and user-ids. Validate passwords.
WSU Web developmentDesign considerations
WSU Web developmentDesign considerations
WSU Web developmentDesign considerations
State or Stateless services?
Keeping state:
Types of variables to remember state. Hidden? AIV? Other?
Keep browser and server in sync.? Back/forward, submit...
Keeping data… exceeding DATSIZE or CICS going SOS.
Timeout after how many minutes?
Garbage collection after abends.
PPTE5990
SREN5000
ICAC2212
ESIZESource
Pfkey def
Stack
Globals
USIZE
AIVs (+var)Compiled obj“run” obj.
FSIZEDDM
Adabas buffers
DATSIZELDA
GDA
Constants
Individual to each session.
15 minute “idle” lifespan
ID should contain Business funct and variable name.
Can be many large allocations.
WSU Web developmentDesign considerations
Browser Caching… Each does things its own way, and may be configured by the user to non-standard settings. What do you do?
Here is an example of the problem:
Menu
o Display
o Update
o Select
DISPLAY
Loan Amt.: $10
Date: 10/31/01
Name: Roger
UPDATE
Loan Amt.: $10
Date: 10/31/01
Name: Roger
Add upd dispAdd upd disp Add upd disp
Refresh cach:
1) At start of session
2) Always
3) Never
4) Automatic
Host’s state data can differ from browser cache depending on which type of “button” is clicked… back,forward, submit, or href=
WSU Web developmentDesign considerations
Browser caching
HTTP can affect browser caching in a limited way, with #pragma=nocach or caching directives. The problem is each browser works differently.
Some solutions:
1) In the server, check the browser type and version and issue a warning for old browsers, or tell the user to change the setting to “always refresh”.
2) Put a MAXLIFE=0 into the HTTP header, which tells the browser that the cach is old immediately and to get a new copy from the server always.
WSU Web developmentDesign considerations
Multi-Platform applications:
Navigation and communication; where to keep
Variables (how do you share application data?)
Images and templates (central, local, or both).
Maintaining URL’s (relative/full… test vs prod.)
Synchronization of lifecycle (move to prod.)
WSU Web developmentTesting
Security
Defining groups, users, ACLs on development/test platform cell.
Be sure all types of security are in place (SSL, DCE, RACF, etc.)
URL cautions
When moving templates (or programs with hard-coded html) into the next phase of the lifecycle. Be certain the URL is correct. This can be easily missed, until the module in production points to devl/test and someone decides to modify it for the next phase of the project.
Try not to reference images from other platforms. Transfer times, availability, and lifecycle sync may be questionable.
ADABAS access
Similar issue to the URLs mentioned previously. Be sure the programs are compiled with the proper view(s). If the view points to devl/test it may not show up as a problem for a day or two, since the production data is periodically copied to test/devl. Use UDB and views with dbid=0 of possible.
* This is no longer an issue at WSU, but may be for other shops.
Images
User + group Ids/permissions
Templates
Profiles
Programs (Natural + Non-Natural)
File modifications (new fields)
Command file definitions
Synchronizing lifecycle components
(esp. multi-platform).
WSU Web developmentDebugging
WSU Web developmentDebugging
CICS trace messagesCICS has a trace entry for each request. Here is an example:082401 06:24:17.54 0094 WWBC ALIAS TRAN START082401 07:52:30.13 0132 WTXN WEB ATTACH TRAN START082401 07:52:34.53 0132 WTXN ANALYZER ENTRY082401 07:52:34.53 0132 WTXN /ppte5990/wwba/hepps HTTP/1.1??Accept: application082401 07:52:34.53 0132 WTXN ANALYZER EXIT
This tells you if you successfully started your program or not.This trace can be seen in the job $ADCICSW under DDNAME mandtrac. Each entry has a date and time stamp to help you locate your request.
WSU Web developmentDebugging
Application trace messages
CICS has a report for each thread, where the output from WRITE and DISPLAY statements go. These are in job $ADCICSW under the DDNAME MNnn (where nn is the thread number). The web dispatcher also writes to this report. Here is an example:
Page 1 08/24/01 07:
entering PPTE5060MORE
08/24/01 07:53:17 WEBMAIN: MN00 Transaction NEW5060 Complete
WSU Web developmentDebugging
Dispatcher messagesThe CICS dispatcher finds and initiates the proper module, according to the URL specified. If an error occurs during location, initialization, or execution of the requested module that is outside if its jurisdiction, the dispatcher will catch the error and report it back to the web browser. The message should contain the program name, line number and error number where the error occurred.
WSU Web developmentDebugging
Environment variablesUse SYSBUS, SYSEDVAR to see the same things you normally would see if you used BUS or EDIT VARIABLES. These (WSU) utilities put the output of these utilities into the editor buffer. Once you have loaded data into the editor buffer you can use (WSU) utility URL SYSEDT1 to put the contents of the editor buffer to your webpage.
WSU Web developmentDebugging
Dumps and VariablesIf you still cannot determine what is happening in your code, we can trace the web transaction with the CICS CEDF facility, or we can switch the dump dataset and format a dump (if you created one).
These are our least favorite ways to debug your application, but are available if you have exhausted the preceding techniques.