<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
Re: Load on startup is ignored - JaxWS webservice is always initialized first
</h3>
<span style="margin-bottom: 10px;">
created by <a href="http://community.jboss.org/people/jim.ma">Jim Ma</a> in <i>JBoss AS7 Development</i> - <a href="http://community.jboss.org/message/617278#617278">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><blockquote class="jive-quote"> <ul><li style="text-align: start;">Why is the ServletContextListener called when all Servlets are instantiated?</li></ul></blockquote><p>You probably misundertood by the following webservice deployer output:</p><blockquote class="jive-quote"><p>12:13:26,227 INFO  [org.jboss.wsf.stack.cxf.metadata.MetadataBuilder] (MSC service thread 1-2) Add Service</p><p> id=HelloServlet</p><p><span> address=</span><a class="jive-link-external-small" href="http://localhost:8080/helloServlet/HelloServlet" target="_blank">http://localhost:8080/helloServlet/HelloServlet</a></p><p> implementor=servlet.hello.helloservlet.HelloServletImpl</p><p> invoker=org.jboss.wsf.stack.cxf.InvokerJSE</p><p><span> serviceName={</span><a class="jive-link-external-small" href="http://helloservlet.hello.servlet/" target="_blank">http://helloservlet.hello.servlet/</a><span>}HelloServletImplService</span></p><p><span> portName={</span><a class="jive-link-external-small" href="http://helloservlet.hello.servlet/" target="_blank">http://helloservlet.hello.servlet/</a><span>}HelloServletImplPort</span></p><p> wsdlLocation=null</p><p> mtomEnabled=false</p><p>12:13:26,228 INFO  [org.jboss.ws.common.management.DefaultEndpointRegistry] (MSC service thread 1-2) register: jboss.ws:context=helloServlet,endpoint=HelloServlet</p><p>12:13:29,986 INFO  [stdout] (MSC service thread 1-2) HelloServlet is instantiated!</p><p><span>12:13:29,991 INFO  [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (MSC service thread 1-2) Creating Service {</span><a class="jive-link-external-small" href="http://helloservlet.hello.servlet/" target="_blank">http://helloservlet.hello.servlet/</a><span>}HelloServletImplService from class servlet.hello.helloservlet.HelloServlet</span></p><p><span>12:13:30,023 INFO  [org.apache.cxf.endpoint.ServerImpl] (MSC service thread 1-2) Setting the server's publish address to be </span><a class="jive-link-external-small" href="http://localhost:8080/helloServlet/HelloServlet" target="_blank">http://localhost:8080/helloServlet/HelloServlet</a></p><p>12:13:30,024 WARN  [org.jboss.wsf.stack.cxf.resolver.JBossWSResourceResolver] (MSC service thread 1-2) Cannot resolve resource: cxf</p><p>12:13:30,030 INFO  [org.jboss.wsf.stack.cxf.deployment.WSDLFilePublisher] (MSC service thread 1-2) WSDL published to: file:/home/jimma/x1/code/git-client/maerqiang-work/jboss-as/build/target/jboss-as-7.1.0.Alpha1-SNAPSHOT/standalone/data/wsdl/helloServlet.war/HelloServletImplService.wsdl</p><p>12:13:31,517 INFO  [org.jboss.as.webservices.service.EndpointService] (MSC service thread 1-10) Starting service jboss.ws.endpoint.helloServlet.HelloServlet</p></blockquote><p>As you see the HelloServletImpl.class (configured in web.xml  <servlet-class>servlet.hello.helloservlet.HelloServletImpl</servlet-class>) is not a real servlet class, the webservie deployer will modify the web.xml and start the endpoint impl before the real servlet - org.jboss.wsf.stack.cxf.CXFServletExt which servers the servlt transport initialize and start to work.  These webservice deployers which output above message are executed before the web deployer to create WebContext . That's why you see it is executed after the HelloServlet is Initialized. But ServletContextListener is actually executed as expected before the real servlets are initialized. Here in your war file is after  CXFServletExt and Startup are initialized. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><blockquote class="jive-quote"><ul><li style="text-align: start;"><strong>Why is "<load-on-startup>" ignored when the implementation differ only in the WS implementation?</strong></li></ul></blockquote><p>It is not ignored. The <load-on-startup> configured to HelloServlet is passed to org.jboss.wsf.stack.cxf.CXFServletExt.  I tried with your example it works properly. </p><blockquote class="jive-quote"><p>rushead wrote:</p><ul><li style="text-align: start;">Last but not least: What is the best and usual way to initialize a custom environment for several servlets in a war file?</li></ul></blockquote><p><span>I did not get what you want to initialize from the source code(maybe I missed something), so I am not sure if do the initialize work in a real servlet and inject something with WebServiceContext can help. Here is some documentation about how to access MessageContext and/or Http request and response:</span><a class="jive-link-external-small" href="http://cxf.apache.org/docs/servlet-transport.html" target="_blank">http://cxf.apache.org/docs/servlet-transport.html</a><span> </span></p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/617278#617278">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss AS7 Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2225">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>