Difference between revisions of "EclipseLink/Examples/DBWS/AdvancedJavase6Containerless"

From Eclipsepedia

Jump to: navigation, search
Line 59: Line 59:
 
         DBWSProvider.class
 
         DBWSProvider.class
 
</source>
 
</source>
 +
 +
The <code>DBWSProvider</code> class is annotated slightly differently for 'containerless' deployment:
 +
<source lang="java5">
 +
package _dbws;
 +
 +
//javase imports
 +
import java.lang.reflect.Method;
 +
 +
//Java extension libraries
 +
import javax.annotation.PostConstruct;
 +
import javax.annotation.PreDestroy;
 +
import javax.servlet.ServletContext;
 +
import javax.xml.soap.SOAPMessage;
 +
import javax.xml.ws.Provider;
 +
import javax.xml.ws.ServiceMode;
 +
import javax.xml.ws.WebServiceProvider;
 +
import static javax.xml.ws.Service.Mode.MESSAGE;
 +
 +
//EclipseLink imports
 +
import org.eclipse.persistence.internal.dbws.ProviderHelper;
 +
 +
@WebServiceProvider(
 +
    wsdlLocation = "WEB-INF/wsdl/eclipselink-dbws.wsdl",
 +
    serviceName = "crudService",
 +
    portName = "crudServicePort",
 +
    targetNamespace = "urn:crudService"
 +
)
 +
@ServiceMode(MESSAGE)
 +
public class DBWSProvider extends ProviderHelper implements Provider<SOAPMessage> {
 +
    public  DBWSProvider() {
 +
        super();
 +
    }
 +
</source>
 +
 +
  
 
</onlyinclude>
 
</onlyinclude>

Revision as of 15:11, 20 April 2009


DBWS Services running 'containerless' using the Endpoint API

It is possible to run a Web service using Javase 6's "containerless" javax.xml.ws.Endpoint API.

Javase 6 ships with the JAX-WS 2.x APIx inside the JDK - versions prior to update 4 have JAX-WS 2.0 APIs, which may cause some issues with later API requirements: to fix this, copy jaxws-api.jar and jaxb-api.jar into the endorsed directory (typically $JAVA_HOME/lib/endorsed or $JDK_HOME/jre/lib/endorsed). Please see this link for more details.

DBWSBuilder javase packager

When invoked from the command-line, the DBWSBuilder offers out-of-the-box support for building and packaging DBWS Services for either the WebLogic server or for running 'containerless' using the javax.xml.ws.Endpoint API

prompt > dbwsbuilder.cmd -builderFile {path_to_builder.xml} -stageDir {path_to_stageDir} -packageAs {packager}
Available packagers:
  -packageAs:[default=archive] wls [warFilename]
  -packageAs:[default=archive] javase [jarFilename]
                               ^^^^^^

The content of the .jar file is arranged differently from how the wls packager builds a .war file:

wls packager
 root of war file
    \---web-inf
    |
    |   web.xml
    |
    +---classes
    |   |
    |   +---META-INF
    |   |       eclipselink-dbws.xml
    |   |       eclipselink-dbws-or.xml
    |   |       eclipselink-dbws-ox.xml
    |   |       eclipselink-dbws-sessions.xml
    |   |
    |   \---_dbws
    |           DBWSProvider.class            -- auto-generated JAX-WS 2.0 Provider
    |
    \---wsdl
            eclipselink-dbws-schema.xsd
            eclipselink-dbws.wsdl
 
javase packager
 root of jar file
    \---meta-inf
    |   eclipselink-dbws.xml
    |   eclipselink-dbws-or.xml
    |   eclipselink-dbws-ox.xml
    |   eclipselink-dbws-sessions.xml
    |
    +---wsdl
    |   eclipselink-dbws-schema.xsd
    |   eclipselink-dbws.wsdl
    |
    \---_dbws
        DBWSProvider.class

The DBWSProvider class is annotated slightly differently for 'containerless' deployment:

package _dbws;
 
//javase imports
import java.lang.reflect.Method;
 
//Java extension libraries
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.servlet.ServletContext;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.Provider;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;
import static javax.xml.ws.Service.Mode.MESSAGE;
 
//EclipseLink imports
import org.eclipse.persistence.internal.dbws.ProviderHelper;
 
@WebServiceProvider(
    wsdlLocation = "WEB-INF/wsdl/eclipselink-dbws.wsdl",
    serviceName = "crudService",
    portName = "crudServicePort",
    targetNamespace = "urn:crudService"
)
@ServiceMode(MESSAGE)
public class DBWSProvider extends ProviderHelper implements Provider<SOAPMessage> {
    public  DBWSProvider() {
        super();
    }