JBoss Community

Web Service annotated with @PostConstruct - wrong order w.r.t Listener

created by Mike Norman in JBoss Web Services - View the full discussion

I have a Web Service:

 

//javase imports
import java.io.InputStream;
import java.io.StringReader;
import org.xml.sax.InputSource;
//java eXtension imports
import
javax.annotation.PostConstruct;
import
javax.annotation.PreDestroy;
import javax.servlet.ServletContext;
import javax.xml.namespace.QName;
import
javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPException;
import
javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPFault;
import javax.xml.soap.SOAPMessage;
import
javax.xml.soap.SOAPPart;
import javax.xml.transform.dom.DOMSource;
import javax.xml.ws.Provider;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;
import
javax.xml.ws.soap.SOAPFaultException;
import static javax.xml.ws.Service.Mode.MESSAGE;@WebServiceProvider(     wsdlLocation = "WEB-INF/wsdl/eclipselink-dbws.wsdl",     serviceName = "simpleService",     portName = "simpleServicePort",     targetNamespace = "urn:simpleService" ) @ServiceMode(MESSAGE) public class SimpleProvider implements Provider<SOAPMessage> {     @PostConstruct     public void init() {         System.out.println("*****************init");         ClassLoader parentClassLoader = Thread.currentThread().getContextClassLoader();         InputStream eclipseLinkStream = parentClassLoader.getResourceAsStream(             "/META-INF/eclipselink-dbws-or.xml");         if (eclipseLinkStream != null) {             System.out.println("/META-INF/eclipselink-dbws-or.xml = " +                 eclipseLinkStream.toString());         }         ServletContext sc = ProviderListener.SC;         if (sc == null) {             System.out.println("servlet context is null");         }         else {             InputStream schemaStream =                 sc.getResourceAsStream("/WEB-INF/wsdl/eclipselink-dbws-schema.xsd");             System.out.println("WEB-INF/wsdl/eclipselink-dbws-schema.xsd = " +                 schemaStream.toString());         }     }
...

 

I also have a ServletContextListener:

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ProviderListener implements ServletContextListener {         public static ServletContext SC = null;         public  ProviderListener() {         super();     }     public void contextInitialized(ServletContextEvent sce) {         System.out.println("*****************ServletContext initialized");         SC = sce.getServletContext();     }     public void contextDestroyed(ServletContextEvent sce) {         // no-op    } }

 

When I deploy to Glassfish, WebLogic and WebSphere, the order of execution is: Listener, then @PostConstruct

 

However, when I deploy to JBoss 5.10 (w Metro), the order is @PostConstruct then Listener.

 

Is this a known issue, or is there a workaround?

 

Thanks in advance,

Mike Norman

Reply to this message by going to Community

Start a new discussion in JBoss Web Services at Community