Category Archives: weblogic

Weblogic stuffs

How to in Weblogic Tutorials – Weblogic Deploment exception


If you are getting the following exception while activating the server

then make sure that you do the following setting as well to go past.

Class Not Found exception while deploying the application


If you are getting class not found exception for a particular library upon deploying the application then check If the ‘Deploy by default’ option is checked for the library in your application.

If the library is referred in the Weblogic-application.xml then make sure that the library has to be deployed to the server. This will be referred in you Weblogic-application.xml as

<library-ref>
<library-name>adf.oracle.domain</library-name>
</library-ref>

ADF Application Troubleshooting Flowchart – Explained


Initial Stage

Debugging the Issue:

Debugging the problem is the important step in finding the problem in ADF Application. If you are able to debug the application flow then there is a possible chance of pointing out the problem in the first place. Debugging help us to understand where and when the problem arises.

In ADF Application you can debug the issue by placing the breakpoints in Java class file and also in Task Flows. To know more about debugging follow this link

If we are able to identify the problem and fix it then its good. otherwise note down the problem and move to next step

Look for Errors:

After debugging the issues we are sure that the outcome will result in

  • What is the problem?
  • Where is the problem occurring?
  • When is the problem occurring?

Most of the time we have the exception thrown to the user or in the console. Its easy foe advanced user to identify the  cause of the issue when the exception or the error is thrown. Also the exceptions that occur will be self explanatory but its hard for newbie to spot the root cause.

Its always advised to find the exception or error for the clear understanding of the problem. So we have to find a way to get these exceptions thrown. These are the qualified places to look for errors and exceptions

  • JDeveloper Console – For integrated server
  • Weblogic Console – if its a standalone deployment

This link will help you to find the errors and also some standard practice to look for exceptions by preparing the application to log the application events using a Logger file.

After seeing the Exceptions

Search for Errors online

By this time you would have got the exception or the error in your hand. So don’t waste time start searching for the error in

  • To Search in Google efficiently follow this link
  • OTN Forum link is here
  • Documentation (11.1.1.6) link is here
  • Oracle Support link is here

Eg. If this is the error that you are getting


oracle.adf.controller.internal.AdfcIllegalStateException: oracle.adf.controller.ControllerException: ADFC-12003: The page flow scope stack is empty.
 at oracle.adfinternal.controller.state.PageFlowStackEntry.getPageFlowScope(PageFlowStackEntry.java:271)
 at oracle.adfinternal.controller.state.ViewPortContextImpl.getCurrentStateInstance(ViewPortContextImpl.java:594)
 at oracle.adfinternal.controller.state.RequestState.setCurrentViewPortContext(RequestState.java:200)
 at oracle.adfinternal.controller.state.ControllerState.setRequestState(ControllerState.java:948)
 at oracle.adfinternal.controller.state.ControllerState.synchronizeStatePart1(ControllerState.java:360)
 at oracle.adfinternal.controller.application.SyncNavigationStateListener.beforePhase(SyncNavigationStateListener.java:127)
 at oracle.adfinternal.controller.lifecycle.ADFLifecycleImpl$PagePhaseListenerWrapper.beforePhase(ADFLifecycleImpl.java:551)
 at oracle.adfinternal.controller.lifecycle.LifecycleImpl.internalDispatchBeforeEvent(LifecycleImpl.java:100)
 at oracle.adfinternal.controller.lifecycle.LifecycleImpl.dispatchBeforePagePhaseEvent(LifecycleImpl.java:147)
 at oracle.adfinternal.controller.faces.lifecycle.ADFPhaseListener$PhaseInvokerImpl.dispatchBeforePagePhaseEvent(ADFPhaseListener.java:112)
 at oracle.adfinternal.controller.faces.lifecycle.ADFPhaseListener.beforePhase(ADFPhaseListener.java:59)
 ...

Options to search

  1. oracle.adf.controller.internal.AdfcIllegalStateException (common search term)
  2. oracle.adf.controller.ControllerException (common search term)
  3. ADFC-12003: The page flow scope stack is empty (common search term)
  4. ADFC-12003  – you are widening the scope of the search if the above search term is not helping you
  5. oracle.adfinternal.controller.state.PageFlowStackEntry.getPageFlowScope – this will help you to identify when this problem arises
  6. PageFlowStackEntry.java:271 – strike the hammer at the point

Note: If you want to find issues similar to this in otn then give like ‘ADFC-12003 + OTN

Analysis Stage

You will come to this stage if you are not success with the above approach to identify the issue.

Are you trying some new Feature?

Is this a Connection Problem?

  • Check the connection, and make sure if you are able to connect to the DB properly.
  • Make sure that you have configured the Data Source properly.
  • Is the Databindings.cpx points to the correct application module configuration

Is it a common Java Issue?

  • Class path issue – Check if the libraries are there in the class path and if you have added the libraries to the project.
  • Did you add the correct libraries to the project
  • make sure that you ‘Deploy by Default‘ the libaries that you add
  • Common Exceptions – NullPointerException, ArithmeticException, NumberFormatingException etc
  • If these errors are shown inside the framework then check if you are doing what is expected and you are sure to check how it works.

Is this a common JEE Issue?

  • Deployment issue – this can be related to configurations in web.xml, weblogic.xml or weblogic-application.xml. Check if this can be solved using the parameters, filters or servlet mapping in web.xml
  • Session related issue – This can be again related to web.xml and session handling
  • Transaction issue – configurations related to adfc-config.xml

Configuration Issue?

  • All configuration parameters are here

Page Refresh Issue?

  • Check iterator refresh condition property
  • Check the changeeventpolicy in iterator
  • is the partialsubmit or the autosubmit is working as expected
  • cross check with the immediate property
  • Check the partial triggers property

Security Issue?

  • May be related to jazn-data.xml, is the system-data.xml getting updated with the User and Roles
  • the configurations are done in web.xml, weblogic.xml
  • Check security settings in weblogic server.
  • Check security setting for the folders also, sometimes the server needs full permission for some updates. This may also cause some problem

Intermittent Issue?

  • This may be related to Clustering. Cross check with clustering of ADF Application
  • adf-config.xml has some property for clustering. check that

Memory Issue?

  • Increase the Heap size for the application and try
  • make your application more performance to overcome any memory issues

Data Issue?

  • Check if the DB data is proper
  • Run the query in the back end to make sure that you get the proper result

Change not reflecting?

  • Do a clean build and try to run again. make sure you generate the classes again
  • remove drs folder in system folder or remove the DefaultDomain folder or remove the complete system folder and try from scratch

Not sure about the problem?

  • Cross check our logic,never assume that your logic is correct, try to alter the logic ,ask your peer to review the logic (others will have an extra eye on the problem and the approach)
  • Read the Documentation again to check how the component works and make sure that you completely understand it

Note: Most of the issues listed above are common issues, you will get all related issues when you search online or in Oracle Forums. I believe that Only 5% of the issues can be considered as never experienced by others. So most of the issues that the user experience will be already discussed in the future. So do search the Oracle forums or Google to get your issues solved.

Submission Stage

Post a Forum Question

  • This stage is like you are asking for help from the experts who has some expertise in the area.
  • Wait for the answers, if you are not getting an answer ask for it again one or two times
  • If someone post for your question then try to validate that. Don’t ignore if someone who is not an expert replied to our post. Its better to try all possible ways.
  • If you get an answer, try that and update the post about your findings even if the issue is fixed. This will help some other person who is facing similar issue like you

Raise for help from Oracle

If you have tried all possible options above then you have to wait for Oracle to help you.

  • Raise an SR

weblogic hangs – whats the solution??


If sometimes the weblogic server hangs without leaving any clue behind for debugging just try this out and it might solve the problem.

rename the ldap directory inside

“<Domain_home>\servers\<server_name>\data” 

and you are saved for the day..

one clue for doing the above change is to check for the log and if you see this line then the workaround will solve your problem

“<IIOP>”

usually after enabling iiop the server will start with the security. So the corrupted ldap causes the problem of server getting hanged.

JRockit – a quick view


What is Jrockit JVM?

Is a high performance JVM developed to ensure reliability, scalability, manageability? It’s an enterprise JVM optimized for inter architectures

How machine code is generated by JVM?

Operations stage – JIT compilation – less effective method compilation when the method is called for the first time

Data Structures stage – Thread monitoring – which all methods are frequently called and looking for hot spots

Transformation stage – Code Optimization – recompiles the commonly executed method again efficiently

How threads are used by the JVM?

Each java threads has a stack to store runtime data. -Xss to set the statck size of the thread object for java application, the default for jvm is 256KB

What are the types of Locks?

Thin lock – thread B spins for short time if the lock is acquired by thread A

Fat lock – if thin lock spins for long time, then the CPU time is utilized by other resources by inflating thin lock to fat lock

Recursive lock – synchronized call gets called by itself

Lazy lock – critical section is checked for this lock by the thread

What do you mean by Lock Chains?

Lock chain – A holds lock1 that B also needs, B holds lock 2 that C needs

Open chain – A depends on B, B depends on C and so on. If Long Open chain then the CPU time is wasted in waiting for locks

Deadlock chain – A depends B, B depends on C, C depends on A

Blocked chain – A depends on B, C depends on B, B depends on A

How memory is managed by JVM?

Most common assumption is that an object is most likely to die shortly after it was created: called infant mortality. Objects that are referenced are called as live objects .The process of finding and freeing the space used by these objects are called as Garbage collections

Heap contains two generations. [Nursery or Young] and Old Spaces

TLA [Thread local Area] – free memory chunks from the heap for java threads for exclusive use

Nursery/young’s space – new objects are allocated here – Eden space. Nursery has kept area for current object allocation before young’s collection

Survivor space – objects survived GC of Eden space

Tenured space – objects existed sometime in survivor space are moved to tenured or old space

Old space – after young’s collection objects are moved here

Perm Space – Area of the VM that is used to store the data structures and class information’s.

-XX:MaxPermSize is used to get rid of outofmemoryerror

While promotion if the memory is less than they are stored within young’s space called fragmented nursery – promotion failure

Fragmentation – when the memory is freed the free space may appear in small chunks in many area so that there might not be a contiguous area for allocation of large objects

Compaction – compressing the live objects together and completely reclaiming the memory

What are the basic GC algorithms?

Reference Counting

Mark and Sweep

Compacting

Copying

What are different types of collections?

Serial collection – only one CPU is used for GC, -XX:+UseSerialGC

Parallel Collection – GC is split between different CPU and executed simultaneously, -XX:+UseParallelGC

Stop the world collection – the entire application is completely suspended during the collection

Concurrent collection – one or more GC tasks are done concurrently with few stop the world pauses

Compacting collection – this will compact the entire free space by compressing the live objects

Non compacting collection – will not compact leads to fragmentation

Copying collection – copies the live objects to different area

Parallel Compacting Collection – -XX: +UseParallelOldGC

What are the collectors used?


What are all the performance metrics?

Throughput – % of time not spent in GC

GC overhead – % of time spent in GC

Pause time – unresponsive because of GC

Frequency of collection – how often GC is performed

Memory Footprints – measure of heap size

Promptness – the time between objects GC and memory becomes available

CPU usages – CPU usage in GC

What are the tools to evaluate GC performance?

-XX:+PrintGC

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-verbose:gc

-Xloggc:gc.log

What is Basic GC tuning?

Throughput goal – -XX:GCTimeRatio, total time to be spent on GC

Maximum Pause Time Goal – -XX:MaxGCPauseMillis, indication for collector for pause time

-XX:ParallelGCThreads – number of CPU

Footprint goal

What are Advance GC Tuning?

-Xms – starting heap size

Xmx – maximum heap size

-XX:MinHeapFreeRatio – 40 – proportion of free space to expand

-XX:MaxHeapFreeRatio – 70 – proportion of free space to shrink

-XX:NewSize – intial size of new young generation [eden + survivor 1 + survivor 2]

-XX:MaxNewSize – maximum young size

-XX:NewRatio – ratio between young and tenured size[old]

-XX:SurvivorRatio – ratio between each survivor and eden

-XX:TargetSurvivorRatio – ratio between each survivor and eden after GC

-XX:Permsize – starting permanent generation

-XX:MaxPermSize – max size of permanent generation

-XX:+DisableExplicitGC – disable System.gc()

-XX:+ScavengeBeforeFullGC – perform minor before major collection

-XX:+UseGCOverheadLimit – if 98% of CPU time is spent on GC, then throws OutOfMemoryError

JRockit – JVM connection


add the following entry in setDomainEnv.sh as an extra java properties

EXTRA_JAVA_PROPERTIES="-Xmanagement:port=7091,ssl=false,authenticate=false,autodiscovery=true ${EXTRA_JAVA_PROPERTIES}"
export EXTRA_JAVA_PROPERTIES

The above entry is to enable the remote agent and make sure that the property is set while starting the weblogic server

Then try to create a new connection

and then add the entries to connect to the remote weblogic server

Test the connection and wait for OK and then press finish

A new JVM connection is established.. Now you can proceed with the profiling and monitoring of the server

What is Fusion and what are we doing


Fusion as the name describes is the collective integration of best of breed softwares to simplify business needs. The revolutionary dream of Oracle claims to change the way we see business applications.
Some of the key technologies included are

UI Technology – ADF UI, ADF DI, ADF Mobile, DVT

Model Technology – Toplink, EJB

Backend Technology – Oracle Database, Essbase

Orchestration – Oracle BPEL Process Manager, SOA

Secuirty – Oracle Platform Secuirty Services,OPSS

Server – Oracle Weblogic Server

Customization – Oracle Metadata Services MDS

Aditional Technology – Oracle Enterprise Scheduler Services ESS, Oracle Business Rules OBR, Oracle Data Integrator ODI

and many more technologies from acquired products.

Enable FastSwap in Weblogic deployment


Enable fastswap to load java classes at runtime without relaoding the classloader
have the following entry in weblogic-application.xml

<fast-swap>
<enabled>true</enabled>
</fast-swap>

The following types of changes are supported with FastSwap:

  • Addition of static methods
  • Removal of static methods
  • Addition of instance methods
  • Removal of instance methods
  • Changes to static method bodies
  • Changes to instance method bodies
  • Addition of static fields
  • Removal of static fields
  • Addition of instance fields
  • Removal of instance fields