blob: 25d6487015b8078986f7837be0216a33ad9b8e31 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 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 - May 26 2008, creating packager for JAX-WS RI
******************************************************************************/
package org.eclipse.persistence.tools.dbws;
// javase imports
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
//EclipseLink imports
import static org.eclipse.persistence.internal.xr.Util.WEB_INF_DIR;
import static org.eclipse.persistence.tools.dbws.DBWSPackager.ArchiveUse.noArchive;
import static org.eclipse.persistence.tools.dbws.Util.WEB_XML_FILENAME;
/**
* <p>
* <b>INTERNAL:</b> WebServicePackager extends {@link ProviderPackager}. It is responsible for generating<br>
* the simplified JSR-109 files to deploy the service.
* <pre>
* \--- ${stageDir} root directory
* | ... -- files generated by parent class
* | web.xml -- conform to JSR-154 Servlet 2.5
* </pre>
*
* @author Mike Norman - michael.norman@oracle.com
* @since EclipseLink 1.x
*/
public class JSR109WebServicePackager extends ProviderPackager {
public static final String WEB_XML_PREAMBLE =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<web-app\n" +
" xmlns=\"http://java.sun.com/xml/ns/javaee\"\n" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
" xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n" +
" version=\"2.5\"\n" +
" >\n" +
" <listener>\n" +
" <listener-class>_dbws.ProviderListener</listener-class>\n" +
" </listener>\n" +
" <servlet>\n" +
" <servlet-name>_dbws.DBWSProvider</servlet-name>\n" +
" <servlet-class>_dbws.DBWSProvider</servlet-class>\n" +
" <load-on-startup>0</load-on-startup>\n" +
" </servlet>\n" +
" <servlet-mapping>\n" +
" <servlet-name>_dbws.DBWSProvider</servlet-name>\n" +
" <url-pattern>";
public static final String WEB_XML_URL_PATTERN =
"</url-pattern>\n" +
" </servlet-mapping>\n" +
"</web-app>";
public JSR109WebServicePackager() {
this(new WarArchiver(), "wse", noArchive);
}
protected JSR109WebServicePackager(Archiver archiver, String packagerLabel, ArchiveUse useJavaArchive) {
super(archiver, packagerLabel, useJavaArchive);
}
@Override
public Archiver buildDefaultArchiver() {
return new WarArchiver(this);
}
@Override
public OutputStream getWebXmlStream() throws FileNotFoundException {
return new FileOutputStream(new File(stageDir, WEB_XML_FILENAME));
}
@Override
public void writeWebXml(OutputStream webXmlStream, DBWSBuilder dbwsBuilder) {
StringBuilder sb = new StringBuilder(WEB_XML_PREAMBLE);
sb.append(dbwsBuilder.getContextRoot());
sb.append(WEB_XML_URL_PATTERN);
OutputStreamWriter osw = new OutputStreamWriter(new BufferedOutputStream(webXmlStream));
try {
osw.write(sb.toString());
osw.flush();
}
catch (IOException e) {/* ignore */}
}
@Override
public String getWSDLPathPrefix() {
return WEB_INF_DIR + super.getWSDLPathPrefix();
}
}