It's hard to provide any real useful suggestions because we don't know how you set up your WLM environments. Did you follow exactly the suggestions you cited above?
I don't know the reason why the suggestion was given in the books to separate WLM environments based on the programming language. For PROGRAM TYPE MAIN routines, it wouldn't make any difference because the language environment is initialized when the procedure (or UDF) is called and then destroyed at the end of the procedure execution (assuming STAY RESIDENT NO). But maybe there are some caching effects to take advantage of - I don't know. You could place all procedures in just a few (or the same) WLM application environment. The only routines where you should be careful are DSNUTILU and DSNUTILS. Those procedures must run in an environment with NUMTCB=1 so that two concurrent calls don't collide.
To answer your question, you could run the following query to determine the host language for each procedure in question:
Code:
SELECT language, name FROM sysibm.sysroutines
That should result in:
SYSPROC.DSNWZP, was WLMENV1, now = DB2APEAx (A = Assembler)
SYSPROC.DSNWSPM, was WLMENV1, now = DB2APEAx
SYSPROC.WLM_REFRESH, was WLMENV, now = DB2APEAx
SQLJ.INSTALL_JAR, was WLMENV, now = DB2APEPx
SQLJ.REMOVE_JAR, was WLMENV, now = DB2APEPx
SQLJ.REPLACE_JAR, was WLMENV, now = DB2APEPx
SYSPROC.DSNACICS, was WLMENV2, now = DB2APEAx
SYSPROC.DSNACCOR, was WLMENV, now = DB2APEPx
SQLJ.DB2_INSTALL_JAR, was WLMENV, now = DB2APEPx
SQLJ.DB2_REMOVE_JAR, was WLMENV, now = DB2APEPx
SQLJ.DB2_REPLACE_JAR, was WLMENV, now = DB2APEPx
SQLJ.DB2_UPDATEJARINFO, was WLMENV, now = DB2APEPx
Personally, I think something like the following scheme makes more sense:
- put all DB2-supplied stored procedures (see DSNTIJSG) into one WLM application environment (except for DSNUTILU/DSNUTILS)
- for each product that comes with its own stored procedures, use a dedicated WLM application environment
- if necessary, you can use multiple environments per application