Saturday, February 12, 2011

Fix: Weblogic ServletContext.getRealPath() returns null

Weblogic Server[WLS] returns null if your code is using Servlet.getRealPath() many of you expect that it's another weblogic server bug but it's not. An application can be deployed in two ways either exploded or archive. If you are deploying an application as exploded which is a folder containing your application you won't see such an error. But, if you deploy it as an archive which is like zipping the folder having extentions like war, ear etc.  you will see this error, and mostly we prefer to deploy our applications as archive rather than exploded. So, how to fix such an error.
So, Let's get started
Note:  The advantage of deploying an application as exploded over archive is the access to the application content is much faster.
It's a simple fix. You can fix this problem by approaching it in two ways one is application server level. The other is application level.

Application Server Level

Goto Server Admin Console > Domain > Web Application > Archived Real Path Enabled. Enable this option restart the server and Bingo.!!!

It makes an entry into domain config.xml file something like this,

<web-app-container>
    <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</web-app-container>

Application Level

Create a xml file in WEB-INF folder name it weblogic.xml if it's not there by default. Add the following entry.

<container-descriptor>
    <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>

Redeploy your application done.

Hope this Helps! Please write your comments it will help me improve.

No comments:

Post a Comment