
org.eclipse.persistence.tools.dbws.JavasePackager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipselink Show documentation
Show all versions of eclipselink Show documentation
EclipseLink build based upon Git transaction 346465e
/*******************************************************************************
* Copyright (c) 1998, 2012 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Mike Norman - Oct 29th 2008, create packager for Javase 6 'Containerless' Endpoint deployment
******************************************************************************/
package org.eclipse.persistence.tools.dbws;
//javase imports
import java.io.File;
import java.io.FileInputStream;
import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;
//EclipseLink imports
import static org.eclipse.persistence.internal.xr.Util.DBWS_WSDL;
import static org.eclipse.persistence.internal.xr.Util.DBWS_SCHEMA_XML;
import static org.eclipse.persistence.tools.dbws.DBWSPackager.ArchiveUse.archive;
import static org.eclipse.persistence.tools.dbws.Util.DBWS_PROVIDER_CLASS_FILE;
import static org.eclipse.persistence.tools.dbws.Util.SWAREF_FILENAME;
import static org.eclipse.persistence.tools.dbws.Util.UNDER_DBWS;
/**
*
* PUBLIC: JavasePackager extends {@link ProviderPackager}. It generates a simplified version
* of the JAX-WS Provider Endpoint that can be run using the Javase 6 'containerless' Endpoint API:
*
* Endpoint endpoint = Endpoint.create(new @WebService or @WebServiceProvider);
* endpoint.publish(ENDPOINT_ADDRESS);
* QName serviceQName = new QName(serviceNamespace, serviceName);
* QName portQName = new QName(serviceNamespace, portName);
* service = Service.create(serviceQName);
* service.addPort(portQName, javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, ENDPOINT_ADDRESS);
* ...
* Dispatch dispatch = testService.createDispatch(portQName, SOAPMessage.class,
* Service.Mode.MESSAGE);
* SOAPMessage response = dispatch.invoke(request);
* ...
*
* Package files generated by parent according to the following layout:
*
* ${PACKAGER_ROOT} - could be a directory or a .jar file:
* +---META-INF
* | eclipselink-dbws-or.xml
* | eclipselink-dbws-ox.xml
* | eclipselink-dbws-sessions.xml
* | eclipselink-dbws.xml
* |
* +---_dbws
* | DBWSProvider.class
* |
* \---wsdl
* swaref.xsd -- optional if using attachments
* eclipselink-dbws-schema.xsd
* eclipselink-dbws.wsdl
*
*
* @author Mike Norman - [email protected]
* @since EclipseLink 1.x
*/
public class JavasePackager extends ProviderPackager {
public JavasePackager() {
this(new JavaseArchiver(), "javase", archive);
}
protected JavasePackager(Archiver archiver, String packagerLabel, ArchiveUse useJavaArchive) {
super(archiver, packagerLabel, useJavaArchive);
}
@Override
public Archiver buildDefaultArchiver() {
return new JavaseArchiver(this);
}
/**
* by returning null, the generated _dbws.DDBWProvider class will have a slightly-different
* class annotation:
*
* @WebServiceProvider(
* // note: no 'wsdlLocation' attribute
* serviceName = ${serviceName},
* portName = ${servicePort},
* targetNamespace = ${serviceNamespace}
* )
)
*/
@Override
public String getWSDLPathPrefix() {
return null;
}
static class JavaseArchiver extends JarArchiver {
JavaseArchiver() {
super();
}
JavaseArchiver(DBWSPackager packager) {
super(packager);
}
@Override
protected void addFilesToJarOutputStream(JarOutputStream jarOutputStream) {
super.addFilesToJarOutputStream(jarOutputStream);
/* and more ...
* DBWSProvider.class
* eclipselink-dbws.wsdl
*/
try {
jarOutputStream.putNextEntry(getDBWSProviderClassJarEntry());
f = new File(packager.getStageDir(), DBWS_PROVIDER_CLASS_FILE);
fis = new FileInputStream(f);
for (int read = 0; read != -1; read = fis.read(buffer)) {
jarOutputStream.write(buffer, 0, read);
}
fis.close();
f.deleteOnExit();
jarOutputStream.putNextEntry(getWSDLJarEntry());
f = new File(packager.getStageDir(), DBWS_WSDL);
fis = new FileInputStream(f);
for (int read = 0; read != -1; read = fis.read(buffer)) {
jarOutputStream.write(buffer, 0, read);
}
fis.close();
f.deleteOnExit();
}
catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected JarEntry getSchemaJarEntry() {
return new JarEntry(getWSDLPathPrefix() + DBWS_SCHEMA_XML);
}
@Override
protected JarEntry getSWARefJarEntry() {
return new JarEntry(getWSDLPathPrefix() + SWAREF_FILENAME);
}
ZipEntry getWSDLJarEntry() {
return new JarEntry(getWSDLPathPrefix() + DBWS_WSDL);
}
ZipEntry getDBWSProviderClassJarEntry() {
return new JarEntry(UNDER_DBWS + "/" + DBWS_PROVIDER_CLASS_FILE);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy