Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to dynamically pass parameters in web.xml using weblogic 10.3.x?

I am trying to pass a JVM parameter for a variable configured in web.xml as a context-parameter using a -D notation when starting weblogic server. I have already tried this same configuration using Tomcat 7 and it works as expected, but it DOES NOT work in weblogic server 10.3.3. Any clues?

web.xml

<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
    <display-name>testeParWebXml</display-name>
    <context-param>
        <description>Habilita ou desabilita a configuração de debug do Facelets! Página de debug do Seam.</description>
        <param-name>facelets.DEVELOPMENT</param-name>
        <param-value>${habilitar.debug}</param-value>
    </context-param>
<welcome-file-list>

Then when starting the jvm I pass the parameter using:

-Dhabilitar.debug=true

And I built a Servlet to test:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter pw = response.getWriter();
        String valorParametro = getServletContext().getInitParameter("facelets.DEVELOPMENT");
        pw.write("Param value from web.xml ==>> " + valorParametro);
}

As I mentioned using Tomcat if I change the value to false or true in the -Dhabilitar.debug flag it correctly prints the value in the servlet.

Param value from web.xml ==>>  true

In weblogic I get the output like:

Param value from web.xml ==>>  ${habilitar.debug}

As noticed weblogic DOES NOT parse the value of the variable set in web.xml.

Is it possible to make this work properly in weblogic 10.3.3?

like image 625
groo Avatar asked Oct 26 '11 13:10

groo


1 Answers

Looks like there is not a consistent behavior across different containers. IMHO you should not do it that way. I have always used (and have always seen people using) web.xml containing default values (rather than parameterized values) for stuff. Please see these additional resources (including some not-so-elegant but working approaches to your problem):

  • Best practices for defining and initializing variables in web.xml and then accessing them from Java code
  • Referencing Environment Variables in web.xml
  • http://www.coderanch.com/t/79094/Websphere/environment-variable-referance-Web-xml
like image 112
Viccari Avatar answered Oct 04 '22 00:10

Viccari