Successful .war generation using src/main folder
diff --git a/dbws/config.properties b/dbws/config.properties
index a0d285c..3aface3 100644
--- a/dbws/config.properties
+++ b/dbws/config.properties
@@ -1,2 +1,4 @@
-eclipselink.version=2.4.2-RC1
-eclipselink.home=/Users/djclarke/java/eclipse/eclipselink_2.4
\ No newline at end of file
+eclipselink.version=2.4.2-SNAPSHOT
+eclipselink.home=
+server.name=
+external.txn.controller.name=
\ No newline at end of file
diff --git a/dbws/dbws.maven/src/main/java/org/eclipse/persistence/tools/dbws/MavenPackager.java b/dbws/dbws.maven/src/main/java/org/eclipse/persistence/tools/dbws/MavenPackager.java
index 9781ce5..3d5be11 100644
--- a/dbws/dbws.maven/src/main/java/org/eclipse/persistence/tools/dbws/MavenPackager.java
+++ b/dbws/dbws.maven/src/main/java/org/eclipse/persistence/tools/dbws/MavenPackager.java
@@ -9,12 +9,16 @@
*
* Contributors:
* dclarke - initial
+ * dmccann - May 06, 2013 - added resource dir 'META-INF' for xml/xsd
+ * dmccann - May 09, 2013 - tokens for app server specific values
+ * May 09, 2013 - resource/webinf dir, sessionsxml, path prefix
******************************************************************************/
package org.eclipse.persistence.tools.dbws;
import static org.eclipse.persistence.internal.xr.Util.DBWS_OR_XML;
import static org.eclipse.persistence.internal.xr.Util.DBWS_OX_XML;
import static org.eclipse.persistence.internal.xr.Util.DBWS_SERVICE_XML;
+import static org.eclipse.persistence.internal.xr.Util.WEB_INF_DIR;
import static org.eclipse.persistence.tools.dbws.DBWSPackager.ArchiveUse.noArchive;
import java.io.File;
@@ -22,15 +26,26 @@
import java.io.FileOutputStream;
import java.io.OutputStream;
+import org.eclipse.persistence.internal.sessions.factories.model.SessionConfigs;
+import org.eclipse.persistence.internal.sessions.factories.model.log.LogConfig;
+import org.eclipse.persistence.internal.sessions.factories.model.login.DatabaseLoginConfig;
+import org.eclipse.persistence.internal.sessions.factories.model.platform.CustomServerPlatformConfig;
+import org.eclipse.persistence.internal.sessions.factories.model.project.ProjectConfig;
+import org.eclipse.persistence.internal.sessions.factories.model.session.DatabaseSessionConfig;
+import org.eclipse.persistence.internal.sessions.factories.model.session.ServerSessionConfig;
+import org.eclipse.persistence.sessions.JNDIConnector;
+
public class MavenPackager extends IDEPackager {
File resourceDir;
- String resourceDirName;
+ static final String resourceDirName = "META-INF";
+ static final String projectPathPrefix = "/META-INF/";
+ static final String serverClassNameToken = "SERVER_CLASS_NAME_TOKEN";
+ static final String extTransactionControllerClassToken = "EXT_TRANS_CONTROLLER_CLASS_TOKEN";
public MavenPackager() {
super(null, "maven", noArchive);
srcDirname = "java";
publicHTMLDirname = "webapp";
- resourceDirName = "META-INF";
}
protected void buildResourceDir() throws FileNotFoundException {
@@ -39,11 +54,33 @@
if (!resourceDir.exists()) {
boolean worked = resourceDir.mkdir();
if (!worked) {
- throw new FileNotFoundException("cannot create " + resourceDirName + " under " + srcDir);
+ throw new FileNotFoundException("cannot create " + resourceDirName + " under " + srcDirname);
}
}
}
-
+
+ @Override
+ protected void buildWebInfDir() throws FileNotFoundException {
+ buildPublicHTMLDir();
+ webInfDir = new File(publicHTMLDir, WEB_INF_DIR);
+ if (!webInfDir.exists()) {
+ boolean worked = webInfDir.mkdir();
+ if (!worked) {
+ throw new FileNotFoundException("cannot create " + WEB_INF_DIR + " under " + publicHTMLDirname);
+ }
+ }
+ }
+
+ @Override
+ public String getOxProjectPathPrefix() {
+ return projectPathPrefix;
+ }
+
+ @Override
+ public String getOrProjectPathPrefix() {
+ return projectPathPrefix;
+ }
+
@Override
public OutputStream getOxStream() throws FileNotFoundException {
buildResourceDir();
@@ -55,16 +92,52 @@
buildResourceDir();
return new FileOutputStream(new File(resourceDir, sessionsFileName));
}
-
+
@Override
public OutputStream getServiceStream() throws FileNotFoundException {
buildResourceDir();
return new FileOutputStream(new File(resourceDir, DBWS_SERVICE_XML));
}
-
+
@Override
public OutputStream getOrStream() throws FileNotFoundException {
buildResourceDir();
return new FileOutputStream(new File(resourceDir, DBWS_OR_XML));
}
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public SessionConfigs buildSessionsXML(OutputStream dbwsSessionsStream, DBWSBuilder builder) {
+ SessionConfigs ts = super.buildSessionsXML(dbwsSessionsStream, builder);
+ String dataSource = builder.getDataSource();
+ if (dataSource != null) {
+ DatabaseSessionConfig tmpConfig =
+ (DatabaseSessionConfig)ts.getSessionConfigs().firstElement();
+ ProjectConfig orProject = tmpConfig.getPrimaryProject();
+ LogConfig logConfig = tmpConfig.getLogConfig();
+ String sessionName = tmpConfig.getName();
+ DatabaseSessionConfig orSessionConfig = new ServerSessionConfig();
+ orSessionConfig.setPrimaryProject(orProject);
+ orSessionConfig.setName(sessionName);
+ orSessionConfig.setLogConfig(logConfig);
+ CustomServerPlatformConfig customServerPlatformConfig = new CustomServerPlatformConfig();
+ customServerPlatformConfig.setEnableJTA(true);
+ customServerPlatformConfig.setEnableRuntimeServices(true);
+ customServerPlatformConfig.setServerClassName(serverClassNameToken);
+ customServerPlatformConfig.setExternalTransactionControllerClass(extTransactionControllerClassToken);
+ orSessionConfig.setServerPlatformConfig(customServerPlatformConfig);
+ DatabaseLoginConfig dlc = new DatabaseLoginConfig();
+ dlc.setPlatformClass(builder.getPlatformClassname());
+ dlc.setExternalConnectionPooling(true);
+ dlc.setExternalTransactionController(true);
+ dlc.setDatasource(builder.getDataSource());
+ // TODO: the following is for JBoss
+ //dlc.setLookupType(JNDIConnector.STRING_LOOKUP);
+ dlc.setBindAllParameters(true);
+ dlc.setStreamsForBinding(true);
+ orSessionConfig.setLoginConfig(dlc);
+ ts.getSessionConfigs().set(0, orSessionConfig);
+ }
+ return ts;
+ }
}
\ No newline at end of file
diff --git a/dbws/dbws.simple/dbws-builder.xml b/dbws/dbws.simple/dbws-builder.xml
index 914818f..e156f9a 100644
--- a/dbws/dbws.simple/dbws-builder.xml
+++ b/dbws/dbws.simple/dbws-builder.xml
@@ -1,12 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<dbws-builder version="1.2">
- <properties>
- <property name="projectName">emp</property>
- <property name="logLevel">all</property>
- <property name="driver">com.mysql.jdbc.Driver</property>
- <property name="url">jdbc:mysql://localhost:3306/mysql</property>
- <property name="username">root</property>
- <property name="password">password</property>
- </properties>
- <table schemaPattern="%" tableNamePattern="EMPLOYEE" catalogPattern="%" />
+ <properties>
+ <property name="projectName">simpletable</property>
+ <property name="logLevel">all</property>
+ <property name="username">user</property>
+ <property name="password">password</property>
+ <property name="url">jdbc:mysql://localhost:3306/test</property>
+ <property name="driver">com.mysql.jdbc.Driver</property>
+ <property name="platformClassname">org.eclipse.persistence.platform.database.MySQLPlatform</property>
+ <property name="dataSource">jdbc/DBWStestDS</property>
+ <property name="wsdlLocationURI">http://localhost:8080/dbws.simple/simpletable?wsdl</property>
+ </properties>
+ <table schemaPattern="%" tableNamePattern="SIMPLETABLE" catalogPattern="%" />
</dbws-builder>
\ No newline at end of file
diff --git a/dbws/dbws.simple/pom.xml b/dbws/dbws.simple/pom.xml
index 8f92238..1a7e7d0 100644
--- a/dbws/dbws.simple/pom.xml
+++ b/dbws/dbws.simple/pom.xml
@@ -163,8 +163,7 @@
</goals>
<configuration>
<tasks>
- <mkdir dir="${project.basedir}/target/generated-src/java" />
- <mkdir dir="${project.basedir}/target/generated-src/webapp" />
+ <mkdir dir="${project.basedir}/src/main" />
</tasks>
</configuration>
</execution>
@@ -189,7 +188,7 @@
<argument>-builderFile</argument>
<argument>${project.basedir}/dbws-builder.xml</argument>
<argument>-stageDir</argument>
- <argument>${project.basedir}/target/generated-src</argument>
+ <argument>${project.basedir}/src/main</argument>
<argument>-packageAs</argument>
<argument>maven</argument>
</arguments>
@@ -197,14 +196,75 @@
</execution>
</executions>
</plugin>
+
+ <plugin>
+ <groupId>com.google.code.maven-replacer-plugin</groupId>
+ <artifactId>replacer</artifactId>
+ <version>1.5.2</version>
+ <executions>
+ <execution>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>replace</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <file>${project.basedir}/target/classes/META-INF/eclipselink-dbws-sessions.xml</file>
+ <replacements>
+ <replacement>
+ <token>SERVER_CLASS_NAME_TOKEN</token>
+ <value>${server.name}</value>
+ </replacement>
+ <replacement>
+ <token>EXT_TRANS_CONTROLLER_CLASS_TOKEN</token>
+ <value>${external.txn.controller.name}</value>
+ </replacement>
+ </replacements>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>properties-maven-plugin</artifactId>
+ <version>1.0-alpha-2</version>
+ <executions>
+ <execution>
+ <phase>initialize</phase>
+ <goals>
+ <goal>read-project-properties</goal>
+ </goals>
+ <configuration>
+ <files>
+ <file>${basedir}/../config.properties</file>
+ </files>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-clean-plugin</artifactId>
+ <version>2.4.1</version>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>${project.basedir}/src/main</directory>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+
</plugins>
<resources>
<resource>
- <directory>${project.basedir}/target/generated-src/java/</directory>
- </resource>
- <resource>
- <directory>${project.basedir}/target/generated-src/webapp/</directory>
+ <directory>${project.basedir}/src/main/java/</directory>
</resource>
</resources>
diff --git a/dbws/dbws.simple/src/main/java/_dbws/DBWSProvider.java b/dbws/dbws.simple/src/main/java/_dbws/DBWSProvider.java
deleted file mode 100644
index f7c09c2..0000000
--- a/dbws/dbws.simple/src/main/java/_dbws/DBWSProvider.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package _dbws;
-
-//Java extension libraries
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.annotation.Resource;
-import javax.servlet.ServletContext;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.ws.BindingType;
-import javax.xml.ws.Provider;
-import javax.xml.ws.ServiceMode;
-import javax.xml.ws.WebServiceContext;
-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 = "empService",
- portName = "empServicePort",
- targetNamespace = "urn:empService"
-)
-@ServiceMode(MESSAGE)
-public class DBWSProvider extends ProviderHelper implements Provider<SOAPMessage> {
-
- // Container injects wsContext here
- @Resource
- protected WebServiceContext wsContext;
-
- public DBWSProvider() {
- super();
- }
-
- @PostConstruct
- public void init() {
- ClassLoader parentClassLoader = Thread.currentThread().getContextClassLoader();
- ServletContext sc = ProviderListener.SC;
- boolean mtomEnabled = false;
- BindingType thisBindingType = this.getClass().getAnnotation(BindingType.class);
- if (thisBindingType != null) {
- if (thisBindingType.value().toLowerCase().contains("mtom=true")) {
- mtomEnabled = true;
- }
- }
- super.init(parentClassLoader, sc, mtomEnabled);
- }
-
- @Override
- public SOAPMessage invoke(SOAPMessage request) {
- if (wsContext != null) {
- setMessageContext(wsContext.getMessageContext());
- }
- return super.invoke(request);
- }
-
- @Override
- @PreDestroy
- public void destroy() {
- super.destroy();
- }
-};
diff --git a/dbws/dbws.simple/src/main/java/_dbws/ProviderListener.java b/dbws/dbws.simple/src/main/java/_dbws/ProviderListener.java
deleted file mode 100644
index 0db2bdb..0000000
--- a/dbws/dbws.simple/src/main/java/_dbws/ProviderListener.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package _dbws;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-
-public class ProviderListener implements ServletContextListener {
-
- public static ServletContext SC = null;
-
- public ProviderListener() {
- super();
- }
-
- public void contextInitialized(ServletContextEvent sce) {
- SC = sce.getServletContext();
- }
-
- public void contextDestroyed(ServletContextEvent sce) {
- // no-op
- }
-}
diff --git a/dbws/dbws.simple/src/main/java/eclipselink-dbws-or.xml b/dbws/dbws.simple/src/main/java/eclipselink-dbws-or.xml
deleted file mode 100644
index e69de29..0000000
--- a/dbws/dbws.simple/src/main/java/eclipselink-dbws-or.xml
+++ /dev/null
diff --git a/dbws/dbws.simple/src/main/java/eclipselink-dbws-ox.xml b/dbws/dbws.simple/src/main/java/eclipselink-dbws-ox.xml
deleted file mode 100644
index e69de29..0000000
--- a/dbws/dbws.simple/src/main/java/eclipselink-dbws-ox.xml
+++ /dev/null
diff --git a/dbws/dbws.simple/src/main/java/eclipselink-dbws-sessions.xml b/dbws/dbws.simple/src/main/java/eclipselink-dbws-sessions.xml
deleted file mode 100644
index ed3fcfb..0000000
--- a/dbws/dbws.simple/src/main/java/eclipselink-dbws-sessions.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<sessions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4.2">
- <session xsi:type="database-session">
- <name>emp-dbws-or-session</name>
- <logging xsi:type="eclipselink-log">
- <log-level>all</log-level>
- </logging>
- <primary-project xsi:type="class">org.eclipse.persistence.sessions.Project</primary-project>
- <login xsi:type="database-login">
- <platform-class>org.eclipse.persistence.platform.database.OraclePlatform</platform-class>
- <user-name>root</user-name>
- <password>4C67118DC0DDA402A38890D4CA998A9E</password>
- <driver-class>com.mysql.jdbc.Driver</driver-class>
- <connection-url>jdbc:mysql://localhost:3306/mysql</connection-url>
- <byte-array-binding>false</byte-array-binding>
- <streams-for-binding>true</streams-for-binding>
- <optimize-data-conversion>false</optimize-data-conversion>
- <trim-strings>false</trim-strings>
- </login>
- </session>
- <session xsi:type="database-session">
- <name>emp-dbws-ox-session</name>
- <logging xsi:type="eclipselink-log">
- <log-level>off</log-level>
- </logging>
- <primary-project xsi:type="class">org.eclipse.persistence.internal.xr.sxf.SimpleXMLFormatProject</primary-project>
- </session>
-</sessions>
diff --git a/dbws/dbws.simple/src/main/java/eclipselink-dbws.xml b/dbws/dbws.simple/src/main/java/eclipselink-dbws.xml
deleted file mode 100644
index 4e3ac33..0000000
--- a/dbws/dbws.simple/src/main/java/eclipselink-dbws.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<dbws xmlns:ns1="urn:emp" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <name>emp</name>
- <sessions-file>eclipselink-dbws-sessions.xml</sessions-file>
-</dbws>
diff --git a/dbws/dbws.simple/src/main/webapp/WEB-INF/web.xml b/dbws/dbws.simple/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 955e18d..0000000
--- a/dbws/dbws.simple/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5"
- >
- <listener>
- <listener-class>_dbws.ProviderListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>_dbws.DBWSProvider</servlet-name>
- <servlet-class>_dbws.DBWSProvider</servlet-class>
- <load-on-startup>0</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>_dbws.DBWSProvider</servlet-name>
- <url-pattern>/emp</url-pattern>
- </servlet-mapping>
-</web-app>
\ No newline at end of file
diff --git a/dbws/dbws.simple/src/main/webapp/WEB-INF/wsdl/eclipselink-dbws-schema.xsd b/dbws/dbws.simple/src/main/webapp/WEB-INF/wsdl/eclipselink-dbws-schema.xsd
deleted file mode 100644
index 2c0afd9..0000000
--- a/dbws/dbws.simple/src/main/webapp/WEB-INF/wsdl/eclipselink-dbws-schema.xsd
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:emp">
- <xsd:complexType name="simple-xml-format">
- <xsd:sequence>
- <xsd:any minOccurs="0"/>
- </xsd:sequence>
- </xsd:complexType>
-</xsd:schema>
diff --git a/dbws/dbws.simple/src/main/webapp/WEB-INF/wsdl/eclipselink-dbws.wsdl b/dbws/dbws.simple/src/main/webapp/WEB-INF/wsdl/eclipselink-dbws.wsdl
deleted file mode 100644
index 6702333..0000000
--- a/dbws/dbws.simple/src/main/webapp/WEB-INF/wsdl/eclipselink-dbws.wsdl
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions name="empService" targetNamespace="urn:empService" xmlns:ns1="urn:emp" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:empService" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
- <wsdl:types>
- <xsd:schema elementFormDefault="qualified" targetNamespace="urn:empService" xmlns:tns="urn:empService" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><xsd:import namespace="urn:emp" schemaLocation="eclipselink-dbws-schema.xsd"/></xsd:schema>
- </wsdl:types>
- <wsdl:portType name="empService_Interface">
- </wsdl:portType>
- <wsdl:binding name="empService_SOAP_HTTP" type="tns:empService_Interface">
- <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
- </wsdl:binding>
- <wsdl:service name="empService">
- <wsdl:port name="empServicePort" binding="tns:empService_SOAP_HTTP">
- <soap:address location="REPLACE_WITH_ENDPOINT_ADDRESS"/>
- </wsdl:port>
- </wsdl:service>
-</wsdl:definitions>