You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2007/11/19 17:23:04 UTC
svn commit: r596355 [3/3] - in /servicemix/branches/servicemix-4.0: ./
apache-servicemix/ apache-servicemix/src/main/descriptors/
apache-servicemix/src/main/release/conf/
apache-servicemix/src/main/release/etc/ examples/intermediary/
examples/intermedi...
Added: servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/WsServlet.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/WsServlet.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/WsServlet.java (added)
+++ servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/WsServlet.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,408 @@
+/**
+ * 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.servicemix.openejb;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.net.URISyntaxException;
+import java.security.Principal;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.xml.rpc.ServiceException;
+import javax.xml.rpc.handler.MessageContext;
+import javax.xml.rpc.server.ServiceLifecycle;
+import javax.xml.rpc.server.ServletEndpointContext;
+
+import org.apache.openejb.server.httpd.HttpListener;
+import org.apache.openejb.server.httpd.HttpRequest;
+import org.apache.openejb.server.httpd.HttpResponse;
+import org.apache.openejb.server.webservices.WsConstants;
+
+public class WsServlet implements Servlet {
+ public static final String POJO_CLASS = WsServlet.class.getName() + "@pojoClassName";
+ public static final String WEBSERVICE_CONTAINER = WsServlet.class.getName() + "@WebServiceContainer";
+
+ private static final DefaultContext DEFAULT_CONTEXT = new DefaultContext();
+ private static final ThreadLocal<ServletEndpointContext> endpointContext = new ThreadLocal<ServletEndpointContext>();
+
+ private ServletConfig config;
+ private Object pojo;
+ private HttpListener service;
+
+ public WsServlet() {
+ }
+
+ public WsServlet(HttpListener service) {
+ this.service = service;
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ this.config = config;
+
+ // this is only used by JaxRPC pojo services
+ pojo = createPojoInstance();
+ if (pojo instanceof ServiceLifecycle) {
+ try {
+ ((ServiceLifecycle) pojo).init(new InstanceContext(config.getServletContext()));
+ } catch (ServiceException e) {
+ throw new ServletException("Unable to initialize ServiceEndpoint", e);
+ }
+ }
+ getService();
+ }
+
+ public ServletConfig getServletConfig() {
+ return config;
+ }
+
+ public String getServletInfo() {
+ return "Webservice Servlet " + getService();
+ }
+
+ public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
+ HttpListener service = getService();
+ if (service == null) throw new ServletException("WebServiceContainer has not been set");
+
+ ServletEndpointContext context = getContext();
+ endpointContext.set(new InvocationContext((HttpServletRequest) req));
+ try {
+ res.setContentType("text/xml");
+ RequestAdapter request = new RequestAdapter((HttpServletRequest) req);
+ ResponseAdapter response = new ResponseAdapter((HttpServletResponse) res);
+
+ req.setAttribute(WsConstants.SERVLET_REQUEST, req);
+ req.setAttribute(WsConstants.SERVLET_RESPONSE, res);
+ req.setAttribute(WsConstants.SERVLET_CONTEXT, config.getServletContext());
+ if (pojo != null) {
+ req.setAttribute(WsConstants.POJO_INSTANCE, pojo);
+ }
+
+ try {
+ service.onMessage(request, response);
+ } catch (IOException e) {
+ throw e;
+ } catch (ServletException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new ServletException("Error processing webservice request", e);
+ }
+ } finally {
+ endpointContext.set(context);
+ }
+ }
+
+ public void destroy() {
+ if (pojo instanceof ServiceLifecycle) {
+ ((ServiceLifecycle) pojo).destroy();
+ }
+ }
+
+ private Object createPojoInstance() throws ServletException {
+ ServletContext context = getServletConfig().getServletContext();
+
+ String pojoClassId = context.getInitParameter(POJO_CLASS);
+ if (pojoClassId == null) return null;
+
+ Class pojoClass = (Class) context.getAttribute(pojoClassId);
+ if (pojoClass == null) return null;
+
+ try {
+ Object instance = pojoClass.newInstance();
+ return instance;
+ } catch (Exception e) {
+ throw new ServletException("Unable to instantiate POJO WebService class: " + pojoClass.getName(), e);
+ }
+ }
+
+ private synchronized HttpListener getService() {
+ if (service == null) {
+ ServletConfig config = getServletConfig();
+ String webServiceContainerId = config.getInitParameter(WEBSERVICE_CONTAINER);
+ if (webServiceContainerId != null) {
+ service = (HttpListener) config.getServletContext().getAttribute(webServiceContainerId);
+ }
+ }
+ return service;
+ }
+
+ private static class RequestAdapter implements HttpRequest {
+ private final HttpServletRequest request;
+
+ public RequestAdapter(HttpServletRequest request) {
+ this.request = request;
+ }
+
+ public org.apache.openejb.server.httpd.HttpSession getSession(boolean create) {
+ javax.servlet.http.HttpSession session = request.getSession(create);
+ if (session != null) {
+ return new HttpSessionAdapter(session);
+ } else {
+ return null;
+ }
+ }
+
+ public org.apache.openejb.server.httpd.HttpSession getSession() {
+ javax.servlet.http.HttpSession session = request.getSession();
+ if (session != null) {
+ return new HttpSessionAdapter(session);
+ } else {
+ return null;
+ }
+ }
+
+ public String getHeader(String name) {
+ return request.getHeader(name);
+ }
+
+ public java.net.URI getURI() {
+ try {
+ return new java.net.URI(request.getScheme(), null, request.getServerName(), request.getServerPort(), request.getRequestURI(), request.getQueryString(), null);
+ } catch (URISyntaxException e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
+
+ public int getContentLength() {
+ return request.getContentLength();
+ }
+
+ public String getContentType() {
+ return request.getContentType();
+ }
+
+ public String getContextPath() {
+ return request.getContextPath();
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return request.getInputStream();
+ }
+
+ public int getMethod() {
+ Integer method = methods.get(request.getMethod());
+ return method == null ? UNSUPPORTED : method.intValue();
+ }
+
+ public String getParameter(String name) {
+ return request.getParameter(name);
+ }
+
+ public Map getParameters() {
+ return request.getParameterMap();
+ }
+
+ private static final Map<String, Integer> methods = new TreeMap<String, Integer>();
+
+ static {
+ methods.put("OPTIONS", new Integer(OPTIONS));
+ methods.put("GET", new Integer(GET));
+ methods.put("HEAD", new Integer(HEAD));
+ methods.put("POST", new Integer(POST));
+ methods.put("PUT", new Integer(PUT));
+ methods.put("DELETE", new Integer(DELETE));
+ methods.put("TRACE", new Integer(TRACE));
+ methods.put("CONNECT", new Integer(CONNECT));
+ }
+
+ public Object getAttribute(String s) {
+ return request.getAttribute(s);
+ }
+
+ public void setAttribute(String s, Object o) {
+ request.setAttribute(s, o);
+ }
+
+ public String getRemoteAddr() {
+ return request.getRemoteAddr();
+ }
+
+ }
+
+ private static class HttpSessionAdapter implements org.apache.openejb.server.httpd.HttpSession {
+ private final javax.servlet.http.HttpSession session;
+
+ public HttpSessionAdapter(javax.servlet.http.HttpSession session) {
+ this.session = session;
+ }
+
+ public String getId() {
+ return session.getId();
+ }
+
+ public Object getAttribute(String name) {
+ return getAttribute(name);
+ }
+
+ public void setAttribute(String name, Object value) {
+ session.setAttribute(name, value);
+ }
+
+ public void removeAttribute(String name) {
+ session.removeAttribute(name);
+ }
+ }
+
+ private static class ResponseAdapter implements HttpResponse {
+ private final HttpServletResponse response;
+
+ public ResponseAdapter(HttpServletResponse response) {
+ this.response = response;
+ }
+
+ public PrintWriter getPrintWriter() throws IOException {
+ return response.getWriter();
+ }
+
+ public void setHeader(String name, String value) {
+ response.setHeader(name, value);
+ }
+
+ public String getHeader(String name) {
+ throw new UnsupportedOperationException("Not possible to implement");
+ }
+
+ public OutputStream getOutputStream() {
+ try {
+ return response.getOutputStream();
+ } catch (IOException e) {
+ throw (IllegalStateException) new IllegalStateException().initCause(e);
+ }
+ }
+
+ public void setStatusCode(int code) {
+ response.setStatus(code);
+ }
+
+ public int getStatusCode() {
+ throw new UnsupportedOperationException("Not possible to implement");
+ }
+
+ public void setContentType(String type) {
+ response.setContentType(type);
+ }
+
+ public String getContentType() {
+ return response.getContentType();
+ }
+
+ @SuppressWarnings({"deprecation"})
+ public void setStatusMessage(String responseString) {
+ response.setStatus(getStatusCode(), responseString);
+ }
+
+ public void flushBuffer() throws java.io.IOException {
+ response.flushBuffer();
+ }
+ }
+
+ private static ServletEndpointContext getContext() {
+ ServletEndpointContext context = endpointContext.get();
+ return context != null ? context : DEFAULT_CONTEXT;
+ }
+
+ private static class InstanceContext implements ServletEndpointContext {
+ private final ServletContext servletContext;
+
+ public InstanceContext(ServletContext servletContext) {
+ this.servletContext = servletContext;
+ }
+
+ public MessageContext getMessageContext() {
+ return getContext().getMessageContext();
+ }
+
+ public Principal getUserPrincipal() {
+ return getContext().getUserPrincipal();
+ }
+
+ public HttpSession getHttpSession() {
+ return getContext().getHttpSession();
+ }
+
+ public ServletContext getServletContext() {
+ return servletContext;
+ }
+
+ public boolean isUserInRole(String s) {
+ return getContext().isUserInRole(s);
+ }
+ }
+
+ private static class InvocationContext implements ServletEndpointContext {
+
+ private final HttpServletRequest request;
+
+ public InvocationContext(HttpServletRequest request) {
+ this.request = request;
+ }
+
+ public MessageContext getMessageContext() {
+ return (MessageContext) request.getAttribute(WsConstants.MESSAGE_CONTEXT);
+ }
+
+ public Principal getUserPrincipal() {
+ return request.getUserPrincipal();
+ }
+
+ public HttpSession getHttpSession() {
+ return request.getSession();
+ }
+
+ public ServletContext getServletContext() {
+ throw new IllegalAccessError("InstanceContext should never delegate this method.");
+ }
+
+ public boolean isUserInRole(String s) {
+ return request.isUserInRole(s);
+ }
+ }
+
+ private static class DefaultContext implements ServletEndpointContext {
+
+ public MessageContext getMessageContext() {
+ throw new IllegalStateException("Method cannot be called outside a request context");
+ }
+
+ public Principal getUserPrincipal() {
+ throw new IllegalStateException("Method cannot be called outside a request context");
+ }
+
+ public HttpSession getHttpSession() {
+ throw new javax.xml.rpc.JAXRPCException("Method cannot be called outside an http request context");
+ }
+
+ public ServletContext getServletContext() {
+ throw new IllegalAccessError("InstanceContext should never delegate this method.");
+ }
+
+ public boolean isUserInRole(String s) {
+ throw new IllegalStateException("Method cannot be called outside a request context");
+ }
+ }
+}
Added: servicemix/branches/servicemix-4.0/openejb/src/main/resources/META-INF/spring/openejb-spring.xml
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/src/main/resources/META-INF/spring/openejb-spring.xml?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/src/main/resources/META-INF/spring/openejb-spring.xml (added)
+++ servicemix/branches/servicemix-4.0/openejb/src/main/resources/META-INF/spring/openejb-spring.xml Mon Nov 19 08:22:57 2007
@@ -0,0 +1,61 @@
+<?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.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:osgi="http://www.springframework.org/schema/osgi"
+ xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/util
+ http://www.springframework.org/schema/util/spring-util.xsd
+ http://www.springframework.org/schema/osgi
+ http://www.springframework.org/schema/osgi/spring-osgi.xsd
+ http://www.springframework.org/schema/osgi-compendium
+ http://www.springframework.org/schema/osgi/spring-osgi-compendium.xsd">
+
+ <!-- OpenEJB factory that will initialize the EJB container -->
+ <bean id="openEjb" class="org.apache.servicemix.openejb.OpenEjbFactory">
+ <property name="properties">
+ <props>
+
+ </props>
+ </property>
+ <property name="transactionManager" ref="transactionManager" />
+ <property name="wsRegistry" ref="wsRegistry" />
+ </bean>
+
+ <!-- The EJB deployer -->
+ <bean id="osgiDeployer" class="org.apache.servicemix.openejb.OsgiDeployer" />
+
+ <!-- Web service registry based on the OSGi HTTP service -->
+ <bean id="wsRegistry" class="org.apache.servicemix.openejb.OsgiWsRegistry">
+ <property name="httpService" ref="httpService" />
+ </bean>
+
+ <!-- Reference to the transaction manager -->
+ <osgi:reference id="transactionManager"
+ interface="javax.transaction.TransactionManager" />
+
+ <!-- Reference to the OSGi http service -->
+ <osgi:reference id="httpService"
+ interface="org.osgi.service.http.HttpService" />
+</beans>
\ No newline at end of file
Added: servicemix/branches/servicemix-4.0/openejb/src/test/java/org/apache/servicemix/openejb/MyService.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/src/test/java/org/apache/servicemix/openejb/MyService.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/src/test/java/org/apache/servicemix/openejb/MyService.java (added)
+++ servicemix/branches/servicemix-4.0/openejb/src/test/java/org/apache/servicemix/openejb/MyService.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,16 @@
+package org.apache.servicemix.openejb;
+
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: gnodet
+ * Date: Nov 14, 2007
+ * Time: 7:37:05 PM
+ * To change this template use File | Settings | File Templates.
+ */
+@WebService
+@Stateless
+public class MyService {
+}
Added: servicemix/branches/servicemix-4.0/openejb/src/test/java/org/apache/servicemix/openejb/Test.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/src/test/java/org/apache/servicemix/openejb/Test.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/src/test/java/org/apache/servicemix/openejb/Test.java (added)
+++ servicemix/branches/servicemix-4.0/openejb/src/test/java/org/apache/servicemix/openejb/Test.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,33 @@
+package org.apache.servicemix.openejb;
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import junit.framework.TestCase;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: gnodet
+ * Date: Nov 14, 2007
+ * Time: 12:31:55 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Test extends TestCase {
+
+ public void test() throws Exception {
+ System.setProperty("openejb.deployments.classpath", "false");
+
+ OsgiWsRegistry registry = new OsgiWsRegistry();
+ OpenEjbFactory factory = new OpenEjbFactory();
+ factory.setWsRegistry(registry);
+ factory.init();
+
+ File f = new File("target/test-classes");
+ URL url = f.getAbsoluteFile().toURL();
+ URLClassLoader cl = new URLClassLoader(new URL[] {url}, Test.class.getClassLoader());
+ System.out.println(url.toString());
+ new Deployer().deploy(cl, url.toString());
+ }
+
+}
Added: servicemix/branches/servicemix-4.0/openejb/src/test/resources/META-INF/ejb-jar.xml
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/src/test/resources/META-INF/ejb-jar.xml?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/src/test/resources/META-INF/ejb-jar.xml (added)
+++ servicemix/branches/servicemix-4.0/openejb/src/test/resources/META-INF/ejb-jar.xml Mon Nov 19 08:22:57 2007
@@ -0,0 +1,3 @@
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee">
+
+</ejb-jar>
\ No newline at end of file
Modified: servicemix/branches/servicemix-4.0/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/pom.xml?rev=596355&r1=596354&r2=596355&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/pom.xml (original)
+++ servicemix/branches/servicemix-4.0/pom.xml Mon Nov 19 08:22:57 2007
@@ -42,7 +42,7 @@
<module>main</module>
<module>apache-servicemix</module>
<module>jaxws</module>
- <module>ejb</module>
+ <module>openejb</module>
<module>activemq</module>
</modules>
@@ -69,7 +69,7 @@
<camel.version>1.3-SNAPSHOT</camel.version>
<activemq.version>5.0-SNAPSHOT</activemq.version>
<spring.osgi.version>1.0-m3</spring.osgi.version>
- <spring.version>2.5-rc1</spring.version>
+ <spring.version>2.5-rc2</spring.version>
<commons.logging.version>1.1</commons.logging.version>
<gshell.version>1.0-alpha-1-SNAPSHOT</gshell.version>
<acegi.version>1.0.0</acegi.version>
@@ -166,7 +166,7 @@
<repository>
<id>servicemix-snapshots</id>
<name>ServiceMix Repository</name>
- <url>http://svn.apache.org/repos/asf/incubator/servicemix/m2-repo</url>
+ <url>http://svn.apache.org/repos/asf/servicemix/m2-repo</url>
<releases>
<enabled>false</enabled>
</releases>
@@ -178,11 +178,21 @@
<dependencyManagement>
<dependencies>
- <dependency>
- <groupId>org.apache.servicemix.bundles</groupId>
- <artifactId>org.apache.servicemix.bundles.aopalliance</artifactId>
- <version>1.0-4.0-SNAPSHOT</version>
- </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.aopalliance</artifactId>
+ <version>1.0-4.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.asm</artifactId>
+ <version>2.2.3-4.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.cglib</artifactId>
+ <version>2.1_3-4.0-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.apache.servicemix.bundles</groupId>
<artifactId>org.apache.servicemix.bundles.cxf</artifactId>
@@ -224,6 +234,11 @@
<version>1.6.1-4.0-SNAPSHOT</version>
</dependency>
<dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.xstream</artifactId>
+ <version>1.2.2-4.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.servicemix.nmr</groupId>
<artifactId>org.apache.servicemix.nmr.api</artifactId>
<version>${project.version}</version>
@@ -309,8 +324,8 @@
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.servicemix.ejb</groupId>
- <artifactId>org.apache.servicemix.ejb</artifactId>
+ <groupId>org.apache.servicemix.openejb</groupId>
+ <artifactId>org.apache.servicemix.openejb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
@@ -371,6 +386,11 @@
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-ejb_3.0_spec</artifactId>
<version>1.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+ <version>1.1.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
Modified: servicemix/branches/servicemix-4.0/transaction/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/transaction/pom.xml?rev=596355&r1=596354&r2=596355&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/transaction/pom.xml (original)
+++ servicemix/branches/servicemix-4.0/transaction/pom.xml Mon Nov 19 08:22:57 2007
@@ -32,7 +32,7 @@
<artifactId>org.apache.servicemix.transaction</artifactId>
<packaging>bundle</packaging>
<version>4.0-SNAPSHOT</version>
- <name>ServiceMix Transaction</name>
+ <name>ServiceMix Transaction Manager</name>
<dependencies>
<dependency>