Jim Ma [
http://community.jboss.org/people/jim.ma] created the discussion
"Re: Load on startup is ignored - JaxWS webservice is always initialized first"
To view the discussion, visit:
http://community.jboss.org/message/617278#617278
--------------------------------------------------------------
* Why is the ServletContextListener called when all Servlets are
instantiated?
You probably misundertood by the following webservice deployer output:
12:13:26,227 INFO [org.jboss.wsf.stack.cxf.metadata.MetadataBuilder]
(MSC service thread 1-2) Add Service
id=HelloServlet
address=
http://localhost:8080/helloServlet/HelloServlet
http://localhost:8080/helloServlet/HelloServlet
implementor=servlet.hello.helloservlet.HelloServletImpl
invoker=org.jboss.wsf.stack.cxf.InvokerJSE
serviceName={
http://helloservlet.hello.servlet/
http://helloservlet.hello.servlet/}HelloServletImplService
portName={
http://helloservlet.hello.servlet/
http://helloservlet.hello.servlet/}HelloServletImplPort
wsdlLocation=null
mtomEnabled=false
12:13:26,228 INFO [org.jboss.ws.common.management.DefaultEndpointRegistry] (MSC service
thread 1-2) register: jboss.ws:context=helloServlet,endpoint=HelloServlet
12:13:29,986 INFO [stdout] (MSC service thread 1-2) HelloServlet is instantiated!
12:13:29,991 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (MSC
service thread 1-2) Creating Service {
http://helloservlet.hello.servlet/
http://helloservlet.hello.servlet/}HelloServletImplService from class
servlet.hello.helloservlet.HelloServlet
12:13:30,023 INFO [org.apache.cxf.endpoint.ServerImpl] (MSC service thread 1-2) Setting
the server's publish address to be
http://localhost:8080/helloServlet/HelloServlet
http://localhost:8080/helloServlet/HelloServlet
12:13:30,024 WARN [org.jboss.wsf.stack.cxf.resolver.JBossWSResourceResolver] (MSC
service thread 1-2) Cannot resolve resource: cxf
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
12:13:31,517 INFO [org.jboss.as.webservices.service.EndpointService] (MSC service thread
1-10) Starting service jboss.ws.endpoint.helloServlet.HelloServlet
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.
* *Why is "<load-on-startup>" ignored when the
implementation differ only in the WS implementation?*
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.
rushead wrote:
* Last but not least: What is the best and usual way to initialize a custom environment
for several servlets in a war file?
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:
http://cxf.apache.org/docs/servlet-transport.html
http://cxf.apache.org/docs/servlet-transport.html
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/617278#617278]
Start a new discussion in JBoss AS7 Development at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]