Difference between revisions of "EclipseLink/Examples/DBWS/AdvancedJavase6Containerless"
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(); }