blob: b07a1713e1c6a15ec33eb5646d35cb9230717f2b [file] [log] [blame]
/*
* Copyright (c) 1998, 2020 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// 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 Jakarta Servlet 5.0
* </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=\"https://jakarta.ee/xml/ns/jakartaee\"\n" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
" xsi:schemaLocation=\"https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd\"\n" +
" version=\"5.0\"\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();
}
}