Author: rmannibucau
Date: Wed Jul 25 08:40:26 2012
New Revision: 1365490
URL: http://svn.apache.org/viewvc?rev=1365490&view=rev
Log:
TOMEE-342 webservice with configured deployment url example
Added:
openejb/trunk/openejb/examples/webapps/change-jaxws-url/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/README.md
openejb/trunk/openejb/examples/webapps/change-jaxws-url/pom.xml
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/java/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/java/org/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/java/org/superbiz/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/java/org/superbiz/jaxws/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/java/org/superbiz/jaxws/Rot13.java
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/resources/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/resources/META-INF/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/resources/META-INF/openejb-jar.xml
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/java/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/java/org/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/java/org/superbiz/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/java/org/superbiz/jaxws/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/java/org/superbiz/jaxws/Rot13Test.java
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/resources/
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/resources/arquillian.xml
Modified:
openejb/trunk/openejb/examples/webapps/pom.xml
Added: openejb/trunk/openejb/examples/webapps/change-jaxws-url/README.md
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/change-jaxws-url/README.md?rev=1365490&view=auto
==============================================================================
--- openejb/trunk/openejb/examples/webapps/change-jaxws-url/README.md (added)
+++ openejb/trunk/openejb/examples/webapps/change-jaxws-url/README.md Wed Jul
25 08:40:26 2012
@@ -0,0 +1,99 @@
+Title: Change JAXWS URL
+
+*Help us document this example! Click the blue pencil icon in the upper right
to edit this page.*
+
+To change a webservice deployment URI one solution is to use openejb-jar.xml.
+
+In this sample we have a webservice though the class Rot13:
+
+ package org.superbiz.jaxws;
+
+ import javax.ejb.Lock;
+ import javax.ejb.LockType;
+ import javax.ejb.Singleton;
+ import javax.jws.WebService;
+
+ @Lock(LockType.READ)
+ @Singleton
+ @WebService
+ public class Rot13 {
+ public String rot13(final String in) {
+ final StringBuilder builder = new StringBuilder(in.length());
+ for (int b : in.toCharArray()) {
+ int cap = b & 32;
+ b &= ~cap;
+ if (Character.isUpperCase(b)) {
+ b = (b - 'A' + 13) % 26 + 'A';
+ } else {
+ b = cap;
+ }
+ b |= cap;
+ builder.append((char) b);
+ }
+ return builder.toString();
+ }
+ }
+
+We decide to deploy to /tool/rot13 url.
+
+To do so we first define it in openejb-jar.xml:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
+ <enterprise-beans>
+ <session>
+ <ejb-name>Rot13</ejb-name>
+ <web-service-address>/tool/rot13</web-service-address>
+ </session>
+ </enterprise-beans>
+ </openejb-jar>
+
+
+It is not enough since by default TomEE deploys the webservices in a
subcontext called webservices. To skip it
+simply set the system property tomee.jaxws.subcontext to / (done in
arquillian.xml for our test).
+
+Then now our Rot13 webservice is deployed as expected to /tool/rot13 and we
check it with arquillian and tomee embedded:
+
+ package org.superbiz.jaxws;
+
+ import org.apache.ziplock.IO;
+ import org.jboss.arquillian.container.test.api.Deployment;
+ import org.jboss.arquillian.junit.Arquillian;
+ import org.jboss.arquillian.test.api.ArquillianResource;
+ import org.jboss.shrinkwrap.api.ArchivePaths;
+ import org.jboss.shrinkwrap.api.ShrinkWrap;
+ import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset;
+ import org.jboss.shrinkwrap.api.spec.WebArchive;
+ import org.junit.AfterClass;
+ import org.junit.BeforeClass;
+ import org.junit.Test;
+ import org.junit.runner.RunWith;
+
+ import java.net.URL;
+
+ import static org.junit.Assert.assertThat;
+ import static org.junit.internal.matchers.StringContains.containsString;
+
+ @RunWith(Arquillian.class)
+ public class Rot13Test {
+ @ArquillianResource
+ private URL url;
+
+ @Deployment(testable = false)
+ public static WebArchive war() {
+ return ShrinkWrap.create(WebArchive.class)
+ .addClass(Rot13.class)
+ .addAsWebInfResource(new
ClassLoaderAsset("META-INF/openejb-jar.xml"),
ArchivePaths.create("openejb-jar.xml"));
+ }
+
+ @Test
+ public void checkWSDLIsDeployedWhereItIsConfigured() throws Exception
{
+ final String wsdl = IO.slurp(new URL(url.toExternalForm() +
"tool/rot13?wsdl"));
+ assertThat(wsdl, containsString("Rot13"));
+ }
+ }
+
+
+
+
+
Added: openejb/trunk/openejb/examples/webapps/change-jaxws-url/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/change-jaxws-url/pom.xml?rev=1365490&view=auto
==============================================================================
--- openejb/trunk/openejb/examples/webapps/change-jaxws-url/pom.xml (added)
+++ openejb/trunk/openejb/examples/webapps/change-jaxws-url/pom.xml Wed Jul 25
08:40:26 2012
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.superbiz</groupId>
+ <artifactId>change-jaxws-url</artifactId>
+ <packaging>war</packaging>
+ <version>1.1-SNAPSHOT</version>
+ <name>OpenEJB :: Web Examples :: Change JAXWS URL</name>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <openejb.version>4.1.0-SNAPSHOT</openejb.version>
+ <tomee.version>1.1.0-SNAPSHOT</tomee.version>
+ </properties>
+ <repositories>
+ <repository>
+ <id>apache-m2-snapshot</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ </repository>
+ <repository>
+ <id>tomcat-m2-repo</id>
+ <name>Tomcat Dev Repository</name>
+ <url>http://tomcat.apache.org/dev/dist/m2-repository/</url>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>apache-m2-snapshot</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ </pluginRepository>
+ </pluginRepositories>
+ <build>
+ <finalName>${project.artifactId}</finalName>
+ <defaultGoal>package</defaultGoal>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.4</version>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.1.1</version>
+ <configuration>
+ <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.openejb.maven</groupId>
+ <artifactId>tomee-maven-plugin</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <configuration>
+ <tomeeVersion>${tomee.version}</tomeeVersion>
+ <tomeeClassifier>plus</tomeeClassifier>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.openejb.maven</groupId>
+ <artifactId>tomee-embedded-maven-plugin</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>tomee-plus</artifactId>
+ <version>${tomee.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>6.0-4</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.10</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>tomee-embedded</artifactId>
+ <version>${tomee.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>tomee-webservices</artifactId>
+ <version>${tomee.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>ziplock</artifactId>
+ <version>${tomee.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>arquillian-tomee-embedded</artifactId>
+ <version>${tomee.version}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <!--
+ This section allows you to configure where to publish libraries for sharing.
+ It is not required and may be deleted. For more information see:
+ http://maven.apache.org/plugins/maven-deploy-plugin/
+ -->
+ <distributionManagement>
+ <repository>
+ <id>local-release-repo</id>
+ <url>file://${project.build.outputDirectory}/repo/</url>
+ </repository>
+ <snapshotRepository>
+ <id>local-snapshot-repo</id>
+ <url>file://${project.build.outputDirectory}/repo/</url>
+ </snapshotRepository>
+ </distributionManagement>
+</project>
Added:
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/java/org/superbiz/jaxws/Rot13.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/java/org/superbiz/jaxws/Rot13.java?rev=1365490&view=auto
==============================================================================
---
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/java/org/superbiz/jaxws/Rot13.java
(added)
+++
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/java/org/superbiz/jaxws/Rot13.java
Wed Jul 25 08:40:26 2012
@@ -0,0 +1,27 @@
+package org.superbiz.jaxws;
+
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import javax.jws.WebService;
+
+@Lock(LockType.READ)
+@Singleton
+@WebService
+public class Rot13 {
+ public String rot13(final String in) {
+ final StringBuilder builder = new StringBuilder(in.length());
+ for (int b : in.toCharArray()) {
+ int cap = b & 32;
+ b &= ~cap;
+ if (Character.isUpperCase(b)) {
+ b = (b - 'A' + 13) % 26 + 'A';
+ } else {
+ b = cap;
+ }
+ b |= cap;
+ builder.append((char) b);
+ }
+ return builder.toString();
+ }
+}
Added:
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/resources/META-INF/openejb-jar.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/resources/META-INF/openejb-jar.xml?rev=1365490&view=auto
==============================================================================
---
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/resources/META-INF/openejb-jar.xml
(added)
+++
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/main/resources/META-INF/openejb-jar.xml
Wed Jul 25 08:40:26 2012
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
+ <enterprise-beans>
+ <session>
+ <ejb-name>Rot13</ejb-name>
+ <web-service-address>/tool/rot13</web-service-address>
+ </session>
+ </enterprise-beans>
+</openejb-jar>
Added:
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/java/org/superbiz/jaxws/Rot13Test.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/java/org/superbiz/jaxws/Rot13Test.java?rev=1365490&view=auto
==============================================================================
---
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/java/org/superbiz/jaxws/Rot13Test.java
(added)
+++
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/java/org/superbiz/jaxws/Rot13Test.java
Wed Jul 25 08:40:26 2012
@@ -0,0 +1,38 @@
+package org.superbiz.jaxws;
+
+import org.apache.ziplock.IO;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.test.api.ArquillianResource;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.net.URL;
+
+import static org.junit.Assert.assertThat;
+import static org.junit.internal.matchers.StringContains.containsString;
+
+@RunWith(Arquillian.class)
+public class Rot13Test {
+ @ArquillianResource
+ private URL url;
+
+ @Deployment(testable = false)
+ public static WebArchive war() {
+ return ShrinkWrap.create(WebArchive.class)
+ .addClass(Rot13.class)
+ .addAsWebInfResource(new
ClassLoaderAsset("META-INF/openejb-jar.xml"),
ArchivePaths.create("openejb-jar.xml"));
+ }
+
+ @Test
+ public void checkWSDLIsDeployedWhereItIsConfigured() throws Exception {
+ final String wsdl = IO.slurp(new URL(url.toExternalForm() +
"tool/rot13?wsdl"));
+ assertThat(wsdl, containsString("Rot13"));
+ }
+}
Added:
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/resources/arquillian.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/resources/arquillian.xml?rev=1365490&view=auto
==============================================================================
---
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/resources/arquillian.xml
(added)
+++
openejb/trunk/openejb/examples/webapps/change-jaxws-url/src/test/resources/arquillian.xml
Wed Jul 25 08:40:26 2012
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<arquillian
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+ <container qualifier="tomee" default="true">
+ <configuration>
+ <property name="httpPort">-1</property>
+ <property name="stopPort">-1</property>
+ <property name="appWorkingDir">target/tomee-embedded</property>
+ <property name="properties">
+ tomee.jaxws.subcontext = /
+ </property>
+ </configuration>
+ </container>
+</arquillian>
Modified: openejb/trunk/openejb/examples/webapps/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/pom.xml?rev=1365490&r1=1365489&r2=1365490&view=diff
==============================================================================
--- openejb/trunk/openejb/examples/webapps/pom.xml (original)
+++ openejb/trunk/openejb/examples/webapps/pom.xml Wed Jul 25 08:40:26 2012
@@ -27,6 +27,7 @@
<packaging>pom</packaging>
<name>OpenEJB :: Web Examples</name>
<modules>
+ <module>change-jaxws-url</module>
<module>ejb-examples</module>
<!-- <module>applet</module> -->
<module>ejb-webservice</module>