You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by as...@apache.org on 2010/08/18 16:38:31 UTC
svn commit: r986706 - in /cxf/trunk/systests/container-integration: ./
grizzly/ grizzly/src/ grizzly/src/test/ grizzly/src/test/java/
grizzly/src/test/java/org/ grizzly/src/test/java/org/apache/
grizzly/src/test/java/org/apache/cxf/ grizzly/src/test/ja...
Author: asoldano
Date: Wed Aug 18 14:38:31 2010
New Revision: 986706
URL: http://svn.apache.org/viewvc?rev=986706&view=rev
Log:
[CXF-2845] Adding grizzly container integration module for testing JAXWS 2.2 HTTP SPI against Grizzly container (through jaxws-grizzly-httpspi - https://jax-ws-commons.dev.java.net/grizzly-httpspi/jaxws-grizzly-httpspi/index.html)
Added:
cxf/trunk/systests/container-integration/grizzly/
cxf/trunk/systests/container-integration/grizzly/pom.xml
cxf/trunk/systests/container-integration/grizzly/src/
cxf/trunk/systests/container-integration/grizzly/src/test/
cxf/trunk/systests/container-integration/grizzly/src/test/java/
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHRequest.java
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHResponse.java
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointAPITest.java
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointBean.java
cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointInterface.java
Modified:
cxf/trunk/systests/container-integration/pom.xml
Added: cxf/trunk/systests/container-integration/grizzly/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/container-integration/grizzly/pom.xml?rev=986706&view=auto
==============================================================================
--- cxf/trunk/systests/container-integration/grizzly/pom.xml (added)
+++ cxf/trunk/systests/container-integration/grizzly/pom.xml Wed Aug 18 14:38:31 2010
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.cxf.systests</groupId>
+ <artifactId>cxf-systests-container-integration</artifactId>
+ <version>2.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <groupId>org.apache.cxf.systests</groupId>
+ <artifactId>cxf-systests-ci-grizzly</artifactId>
+ <name>Apache CXF Container Integration Test Grizzly</name>
+ <version>2.3.0-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxws</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-transports-http-jaxws-spi</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-testutils</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.grizzly</groupId>
+ <artifactId>grizzly-http</artifactId>
+ <version>1.9.18</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jvnet.jax-ws-commons</groupId>
+ <artifactId>jaxws-grizzly-httpspi</artifactId>
+ <version>1.1</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.xml.ws</groupId>
+ <artifactId>jaxws-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>${servlet-api.group}</groupId>
+ <artifactId>${servlet-api.artifact}</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-endorsed-dir</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jaxws_2.2_spec</artifactId>
+ <outputDirectory>${basedir}/target/endorsed</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <argLine>-Djava.endorsed.dirs=${basedir}/target/endorsed</argLine>
+ </configuration>
+ </plugin>
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <compilerArguments>
+ <endorseddirs>${basedir}/target/endorsed</endorseddirs>
+ </compilerArguments>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
Added: cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHRequest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHRequest.java?rev=986706&view=auto
==============================================================================
--- cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHRequest.java (added)
+++ cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHRequest.java Wed Aug 18 14:38:31 2010
@@ -0,0 +1,46 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.systest.grizzly;
+
+import javax.activation.DataHandler;
+import javax.xml.bind.annotation.XmlMimeType;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType(name = "dataRequest", namespace = "http://org.apache.cxf/jaxws/endpoint/")
+public class DHRequest {
+
+ private DataHandler dataHandler;
+
+ public DHRequest() {
+ }
+
+ public DHRequest(DataHandler dataHandler) {
+ this.dataHandler = dataHandler;
+ }
+
+ @XmlMimeType("text/plain")
+ public DataHandler getDataHandler() {
+ return dataHandler;
+ }
+
+ public void setDataHandler(DataHandler dataHandler) {
+ this.dataHandler = dataHandler;
+ }
+
+}
Added: cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHResponse.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHResponse.java?rev=986706&view=auto
==============================================================================
--- cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHResponse.java (added)
+++ cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/DHResponse.java Wed Aug 18 14:38:31 2010
@@ -0,0 +1,45 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.systest.grizzly;
+
+import javax.activation.DataHandler;
+import javax.xml.bind.annotation.XmlMimeType;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType(name = "dataResponse", namespace = "http://org.apache.cxf/jaxws/endpoint/")
+public class DHResponse {
+
+ private DataHandler dataHandler;
+
+ public DHResponse() {
+ }
+
+ public DHResponse(DataHandler dataHandler) {
+ this.dataHandler = dataHandler;
+ }
+
+ @XmlMimeType("text/plain")
+ public DataHandler getDataHandler() {
+ return dataHandler;
+ }
+
+ public void setDataHandler(DataHandler dataHandler) {
+ this.dataHandler = dataHandler;
+ }
+}
Added: cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointAPITest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointAPITest.java?rev=986706&view=auto
==============================================================================
--- cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointAPITest.java (added)
+++ cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointAPITest.java Wed Aug 18 14:38:31 2010
@@ -0,0 +1,202 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.systest.grizzly;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.Service;
+import javax.xml.ws.soap.MTOMFeature;
+import javax.xml.ws.spi.http.HttpContext;
+
+import org.apache.cxf.testutil.common.TestUtil;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.jvnet.jax_ws_commons.transport.grizzly_httpspi.GrizzlyHttpContextFactory;
+
+public class EndpointAPITest extends Assert {
+
+ private static int counter;
+ private static int currentPort;
+ private com.sun.grizzly.http.embed.GrizzlyWebServer server;
+
+ @Before
+ public void setUp() {
+ currentPort = Integer.valueOf(TestUtil.getPortNumber(EndpointAPITest.class, counter++));
+ server = new com.sun.grizzly.http.embed.GrizzlyWebServer(currentPort);
+ }
+
+ @After
+ public void tearDown() {
+ server.stop();
+ server = null;
+ }
+
+ @Test
+ public void testSingleEndpoint() throws Exception {
+
+ String contextPath = "/ctxt";
+ String path = "/echo";
+ String address = "http://localhost:" + currentPort + contextPath + path;
+
+ HttpContext context = GrizzlyHttpContextFactory.createHttpContext(server, contextPath, path);
+
+ Endpoint endpoint = Endpoint.create(new EndpointBean());
+ endpoint.publish(context); // Use grizzly HTTP context for publishing
+
+ server.start();
+
+ invokeEndpoint(address);
+
+ endpoint.stop();
+ }
+
+ @Test
+ public void testMultiplePublishSameAddress() throws Exception {
+ server.start();
+ String contextPath = "/ctxt";
+ String path = "/echo";
+ //need to use the same HttpContext, otherwise Grizzly get confused
+ HttpContext ctx = GrizzlyHttpContextFactory.createHttpContext(server, contextPath, path);
+ for (int i = 0; i < 3; i++) {
+ String address = "http://localhost:" + currentPort + contextPath + path;
+
+ Endpoint endpoint = Endpoint.create(new EndpointBean());
+ endpoint.publish(ctx); // Use grizzly HTTP context for publishing
+
+ invokeEndpoint(address);
+
+ endpoint.stop();
+ }
+ }
+
+ @Test
+ public void testMultipleEndpointsSameContext() throws Exception {
+ server.start();
+ String contextPath = "/ctxt";
+ String path = "/echo";
+ int k = 3;
+ Endpoint[] endpoints = new Endpoint[k];
+ HttpContext[] contexts = new HttpContext[k];
+ String[] addresses = new String[k];
+ for (int i = 0; i < k; i++) {
+ addresses[i] = "http://localhost:" + currentPort + contextPath + path + i;
+ contexts[i] = GrizzlyHttpContextFactory.createHttpContext(server,
+ contextPath,
+ path + i);
+ endpoints[i] = Endpoint.create(new EndpointBean());
+ endpoints[i].publish(contexts[i]);
+ }
+ for (int i = 0; i < k; i++) {
+ invokeEndpoint(addresses[i]);
+ }
+ for (int i = 0; i < k; i++) {
+ endpoints[i].stop();
+ }
+ }
+
+ @Test
+ public void testMultipleEndpointsDifferentContexts() throws Exception {
+ server.start();
+ String contextPath = "/ctxt";
+ String path = "/echo";
+ int k = 3;
+ Endpoint[] endpoints = new Endpoint[k];
+ HttpContext[] contexts = new HttpContext[k];
+ String[] addresses = new String[k];
+ for (int i = 0; i < k; i++) {
+ addresses[i] = "http://localhost:" + currentPort + contextPath + i + path;
+ contexts[i] = GrizzlyHttpContextFactory.createHttpContext(server,
+ contextPath + i,
+ path);
+ endpoints[i] = Endpoint.create(new EndpointBean());
+ endpoints[i].publish(contexts[i]);
+ }
+ for (int i = 0; i < k; i++) {
+ invokeEndpoint(addresses[i]);
+ }
+ for (int i = 0; i < k; i++) {
+ endpoints[i].stop();
+ }
+ }
+
+ private void invokeEndpoint(String publishURL) throws Exception {
+ URL wsdlURL = new URL(publishURL + "?wsdl");
+ QName qname = new QName("http://org.apache.cxf/jaxws/endpoint/", "EndpointService");
+ Service service = Service.create(wsdlURL, qname);
+ checkBasicInvocations(service);
+ checkMTOMInvocation(service);
+ }
+
+ private static void checkBasicInvocations(Service service) {
+ EndpointInterface port = (EndpointInterface)service.getPort(EndpointInterface.class);
+ String helloWorld = "Hello world!";
+ assertEquals(0, port.getCount());
+ Object retObj = port.echo(helloWorld);
+ assertEquals(helloWorld, retObj);
+ assertEquals(1, port.getCount());
+ port.echo(helloWorld);
+ assertEquals(2, port.getCount());
+ try {
+ port.getException();
+ fail("Exception expected!");
+ } catch (Exception e) {
+ assertEquals("Ooops", e.getMessage());
+ }
+ }
+
+ private static void checkMTOMInvocation(Service service) throws IOException {
+ DataSource ds = new DataSource() {
+ public String getContentType() {
+ return "text/plain";
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return new ByteArrayInputStream("some string".getBytes());
+ }
+
+ public String getName() {
+ return "none";
+ }
+
+ public OutputStream getOutputStream() throws IOException {
+ return null;
+ }
+ };
+ EndpointInterface port = (EndpointInterface)service.getPort(EndpointInterface.class,
+ new MTOMFeature(true));
+ DataHandler dh = new DataHandler(ds);
+ DHResponse response = port.echoDataHandler(new DHRequest(dh));
+ assertNotNull(response);
+ Object content = response.getDataHandler().getContent();
+ assertEquals("Server data", content);
+ String contentType = response.getDataHandler().getContentType();
+ assertEquals("text/plain", contentType);
+ }
+
+}
Added: cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointBean.java?rev=986706&view=auto
==============================================================================
--- cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointBean.java (added)
+++ cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointBean.java Wed Aug 18 14:38:31 2010
@@ -0,0 +1,89 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.systest.grizzly;
+
+import java.io.IOException;
+
+import javax.activation.DataHandler;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.jws.WebService;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.soap.MTOM;
+
+@WebService(serviceName = "EndpointService",
+ endpointInterface = "org.apache.cxf.systest.grizzly.EndpointInterface",
+ targetNamespace = "http://org.apache.cxf/jaxws/endpoint/")
+@MTOM
+public class EndpointBean implements EndpointInterface {
+
+ private int count;
+ private boolean initialized;
+
+ public String echo(String input) {
+ count++;
+ return input;
+ }
+
+ @PostConstruct
+ public void init() {
+ this.initialized = true;
+ }
+
+ @PreDestroy
+ public void destroy() {
+ // nothing to do
+ }
+
+ public int getCount() {
+ this.ensureInit();
+ return count;
+ }
+
+ public void getException() {
+ this.ensureInit();
+ throw new WebServiceException("Ooops");
+ }
+
+ public DHResponse echoDataHandler(DHRequest request) {
+ this.ensureInit();
+ DataHandler dataHandler = request.getDataHandler();
+
+ try {
+ if (!dataHandler.getContentType().equals("text/plain")) {
+ throw new WebServiceException("Wrong content type");
+ }
+ if (!dataHandler.getContent().equals("some string")) {
+ throw new WebServiceException("Wrong data");
+ }
+ } catch (IOException e) {
+ throw new WebServiceException(e);
+ }
+
+ DataHandler responseData = new DataHandler("Server data", "text/plain");
+ return new DHResponse(responseData);
+ }
+
+ private void ensureInit() {
+ if (!this.initialized) {
+ throw new IllegalStateException();
+ }
+ }
+
+}
Added: cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointInterface.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointInterface.java?rev=986706&view=auto
==============================================================================
--- cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointInterface.java (added)
+++ cxf/trunk/systests/container-integration/grizzly/src/test/java/org/apache/cxf/systest/grizzly/EndpointInterface.java Wed Aug 18 14:38:31 2010
@@ -0,0 +1,36 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.systest.grizzly;
+
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+@WebService(targetNamespace = "http://org.apache.cxf/jaxws/endpoint/")
+@SOAPBinding(style = SOAPBinding.Style.RPC)
+public interface EndpointInterface {
+
+ String echo(String input);
+
+ int getCount();
+
+ void getException();
+
+ DHResponse echoDataHandler(DHRequest request);
+
+}
Modified: cxf/trunk/systests/container-integration/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/container-integration/pom.xml?rev=986706&r1=986705&r2=986706&view=diff
==============================================================================
--- cxf/trunk/systests/container-integration/pom.xml (original)
+++ cxf/trunk/systests/container-integration/pom.xml Wed Aug 18 14:38:31 2010
@@ -34,4 +34,13 @@
<modules>
<module>webapp</module>
</modules>
+
+ <profiles>
+ <profile>
+ <id>jaxws22</id>
+ <modules>
+ <module>grizzly</module>
+ </modules>
+ </profile>
+ </profiles>
</project>