You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2015/11/26 14:17:30 UTC

cayenne git commit: upgrade Hessian to 4.0.38v

Repository: cayenne
Updated Branches:
  refs/heads/master 4e4e08694 -> 9cee90a27


upgrade Hessian to 4.0.38v


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/9cee90a2
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/9cee90a2
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/9cee90a2

Branch: refs/heads/master
Commit: 9cee90a276e56b64a3ca7da81e91d877c028baa0
Parents: 4e4e086
Author: Savva Kolbachev <s....@gmail.com>
Authored: Wed Nov 25 13:41:22 2015 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Wed Nov 25 13:41:22 2015 +0300

----------------------------------------------------------------------
 cayenne-client/pom.xml                          |  2 +-
 .../remote/hessian/HessianConnection.java       | 21 ++++---
 .../remote/hessian/HessianProxyFactory.java     | 61 ------------------
 .../hessian/HessianURLConnectionFactory.java    | 51 +++++++++++++++
 cayenne-server/pom.xml                          |  2 +-
 .../org/apache/cayenne/map/EntityResolver.java  | 66 +++++++++++++-------
 .../hessian/service/HessianServiceTest.java     | 20 +++---
 docs/doc/pom.xml                                |  2 +-
 pom.xml                                         | 14 ++---
 tutorials/tutorial-rop-client/pom.xml           |  2 +-
 tutorials/tutorial-rop-server/pom.xml           |  2 +-
 11 files changed, 128 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/cayenne-client/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-client/pom.xml b/cayenne-client/pom.xml
index 85a3dfd..9a2f96e 100644
--- a/cayenne-client/pom.xml
+++ b/cayenne-client/pom.xml
@@ -46,7 +46,7 @@
 		</dependency>
 		<dependency>
 			<groupId>com.caucho</groupId>
-			<artifactId>resin-hessian</artifactId>
+            <artifactId>hessian</artifactId>
 			<scope>compile</scope>
 		</dependency>
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianConnection.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianConnection.java b/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianConnection.java
index 779dad5..d8f6ee2 100644
--- a/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianConnection.java
+++ b/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianConnection.java
@@ -19,6 +19,10 @@
 
 package org.apache.cayenne.remote.hessian;
 
+import com.caucho.hessian.client.HessianProxyFactory;
+import com.caucho.hessian.client.HessianRuntimeException;
+import com.caucho.hessian.io.HessianProtocolException;
+import com.caucho.hessian.io.SerializerFactory;
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.event.EventBridge;
 import org.apache.cayenne.event.EventBridgeFactory;
@@ -30,23 +34,19 @@ import org.apache.cayenne.util.Util;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import com.caucho.hessian.client.HessianRuntimeException;
-import com.caucho.hessian.io.HessianProtocolException;
-import com.caucho.hessian.io.SerializerFactory;
-
 /**
  * An ClientConnection that passes messages to a remotely deployed HessianService. It
  * supports HTTP BASIC authentication. HessianConnection serializes messages using Hessian
  * binary web service protocol over HTTP. For more info on Hessian see Caucho site at <a
  * href="http://www.caucho.com/resin-3.0/protocols/hessian.xtp">http://www.caucho.com/resin-3.0/protocols/hessian.xtp</a>.
  * HessianConnection supports logging of message traffic via Jakarta commons-logging API.
- * 
+ *
  * @since 1.2
  */
 public class HessianConnection extends BaseConnection {
 
     private static Log logger = LogFactory.getLog(HessianConnection.class);
-    
+
     public static final String[] CLIENT_SERIALIZER_FACTORIES = new String[] {
             ClientSerializerFactory.class.getName()
     };
@@ -59,7 +59,7 @@ public class HessianConnection extends BaseConnection {
     protected RemoteSession session;
     protected RemoteService service;
     protected SerializerFactory serializerFactory;
-    
+
     /**
      * Creates HessianConnection that will establish dedicated session and will not use
      * HTTP basic authentication.
@@ -120,11 +120,11 @@ public class HessianConnection extends BaseConnection {
 
         return createServerEventBridge(session);
     }
-    
+
     /**
      * Creates an EventBridge that will listen for server events. Returns null if server
      * events support is not configured in the descriptor.
-     * 
+     *
      * @throws CayenneRuntimeException if EventBridge startup fails for any reason.
      */
     protected EventBridge createServerEventBridge(RemoteSession session) throws CayenneRuntimeException {
@@ -219,10 +219,11 @@ public class HessianConnection extends BaseConnection {
         }
 
         // init service proxy...
-        HessianProxyFactory factory = new HessianProxyFactory(this);
+        HessianProxyFactory factory = new HessianProxyFactory();
         factory.setSerializerFactory(HessianConfig.createFactory(
                 CLIENT_SERIALIZER_FACTORIES,
                 null));
+        factory.setConnectionFactory(new HessianURLConnectionFactory(this));
         factory.setUser(userName);
         factory.setPassword(password);
         factory.setReadTimeout(getReadTimeout());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianProxyFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianProxyFactory.java b/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianProxyFactory.java
deleted file mode 100644
index a12e51c..0000000
--- a/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianProxyFactory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*****************************************************************
- *   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.cayenne.remote.hessian;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.apache.cayenne.remote.RemoteSession;
-
-/**
- * A proxy factory that handles HTTP sessions.
- * 
- * @since 1.2
- */
-class HessianProxyFactory extends com.caucho.hessian.client.HessianProxyFactory {
-
-    static final String SESSION_COOKIE_NAME = "JSESSIONID";
-
-    private HessianConnection clientConnection;
-
-    HessianProxyFactory(HessianConnection clientConnection) {
-        this.clientConnection = clientConnection;
-    }
-
-    @Override
-    protected URLConnection openConnection(URL url) throws IOException {
-        URLConnection connection = super.openConnection(url);
-
-        // unfortunately we can't read response cookies without completely reimplementing
-        // 'HessianProxy.invoke()'. Currently (3.0.13) it doesn't allow to cleanly
-        // intercept response... so extract session id from the RemoteSession....
-
-        // add session cookie
-        RemoteSession session = clientConnection.getSession();
-        if (session != null && session.getSessionId() != null) {
-            connection.setRequestProperty("Cookie", SESSION_COOKIE_NAME
-                    + "="
-                    + session.getSessionId());
-        }
-
-        return connection;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianURLConnectionFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianURLConnectionFactory.java b/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianURLConnectionFactory.java
new file mode 100644
index 0000000..d5a441f
--- /dev/null
+++ b/cayenne-client/src/main/java/org/apache/cayenne/remote/hessian/HessianURLConnectionFactory.java
@@ -0,0 +1,51 @@
+/*****************************************************************
+ *   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.cayenne.remote.hessian;
+
+import org.apache.cayenne.remote.RemoteSession;
+
+import java.io.IOException;
+import java.net.URL;
+
+public class HessianURLConnectionFactory extends com.caucho.hessian.client.HessianURLConnectionFactory {
+
+    static final String SESSION_COOKIE_NAME = "JSESSIONID";
+
+    private HessianConnection clientConnection;
+
+    HessianURLConnectionFactory(HessianConnection clientConnection) {
+        this.clientConnection = clientConnection;
+    }
+
+    @Override
+    public com.caucho.hessian.client.HessianConnection open(URL url) throws IOException {
+        com.caucho.hessian.client.HessianConnection hessianConnection = super.open(url);
+
+        // add session cookie
+        RemoteSession session = clientConnection.getSession();
+        if (session != null && session.getSessionId() != null) {
+            hessianConnection.addHeader("Cookie", SESSION_COOKIE_NAME
+                    + "="
+                    + session.getSessionId());
+        }
+
+        return hessianConnection;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/cayenne-server/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/pom.xml b/cayenne-server/pom.xml
index 311f8f3..908b6e4 100644
--- a/cayenne-server/pom.xml
+++ b/cayenne-server/pom.xml
@@ -57,7 +57,7 @@
 		<!-- Optional dependencies... things that might have been placed in submodules... -->
 		<dependency>
 			<groupId>com.caucho</groupId>
-			<artifactId>resin-hessian</artifactId>
+            <artifactId>hessian</artifactId>
 			<scope>provided</scope>
 			<optional>true</optional>
 		</dependency>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/cayenne-server/src/main/java/org/apache/cayenne/map/EntityResolver.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/EntityResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/map/EntityResolver.java
index 64c73d4..020b590 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/EntityResolver.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/EntityResolver.java
@@ -19,13 +19,6 @@
 
 package org.apache.cayenne.map;
 
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.Persistent;
@@ -40,6 +33,13 @@ import org.apache.cayenne.reflect.valueholder.ValueHolderDescriptorFactory;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+
 /**
  * Represents a virtual shared namespace for zero or more DataMaps. Unlike
  * DataMap, EntityResolver is intended to work as a runtime container of
@@ -47,7 +47,7 @@ import org.apache.commons.logging.LogFactory;
  * <p>
  * EntityResolver is thread-safe.
  * </p>
- * 
+ *
  * @since 1.1
  */
 public class EntityResolver implements MappingNamespace, Serializable {
@@ -87,7 +87,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
      * Updates missing mapping artifacts that can be guessed from other mapping
      * information. This implementation creates missing reverse relationships,
      * marking newly created relationships as "runtime".
-     * 
+     *
      * @since 3.0
      */
     public void applyDBLayerDefaults() {
@@ -167,7 +167,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
     /**
      * Returns a {@link LifecycleCallbackRegistry} for handling callbacks.
      * Registry is lazily initialized on first call.
-     * 
+     *
      * @since 3.0
      */
     public LifecycleCallbackRegistry getCallbackRegistry() {
@@ -182,7 +182,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
      * Sets a lifecycle callbacks registry of the EntityResolver. Users rarely
      * if ever need to call this method as Cayenne would instantiate a registry
      * itself as needed based on mapped configuration.
-     * 
+     *
      * @since 3.0
      */
     public void setCallbackRegistry(LifecycleCallbackRegistry callbackRegistry) {
@@ -192,7 +192,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
     /**
      * Returns ClientEntityResolver with mapping information that only includes
      * entities available on CWS Client Tier.
-     * 
+     *
      * @since 1.2
      */
     public EntityResolver getClientEntityResolver() {
@@ -226,10 +226,12 @@ public class EntityResolver implements MappingNamespace, Serializable {
      * Returns all DbEntities.
      */
     public Collection<DbEntity> getDbEntities() {
+        checkMappingCache();
         return mappingCache.getDbEntities();
     }
 
     public Collection<ObjEntity> getObjEntities() {
+        checkMappingCache();
         return mappingCache.getObjEntities();
     }
 
@@ -237,6 +239,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
      * @since 3.0
      */
     public Collection<Embeddable> getEmbeddables() {
+        checkMappingCache();
         return mappingCache.getEmbeddables();
     }
 
@@ -252,18 +255,23 @@ public class EntityResolver implements MappingNamespace, Serializable {
      * @since 4.0
      */
     public Collection<SQLResult> getResults() {
+        checkMappingCache();
         return mappingCache.getResults();
     }
 
     public Collection<Procedure> getProcedures() {
+        checkMappingCache();
         return mappingCache.getProcedures();
     }
 
     public Collection<Query> getQueries() {
+        checkMappingCache();
         return mappingCache.getQueries();
     }
 
     public DbEntity getDbEntity(String name) {
+        checkMappingCache();
+
         DbEntity result = mappingCache.getDbEntity(name);
         if (result == null) {
             // reconstruct cache just in case some of the datamaps
@@ -276,6 +284,8 @@ public class EntityResolver implements MappingNamespace, Serializable {
     }
 
     public ObjEntity getObjEntity(String name) {
+        checkMappingCache();
+
         ObjEntity result = mappingCache.getObjEntity(name);
         if (result == null) {
             // reconstruct cache just in case some of the datamaps
@@ -288,6 +298,8 @@ public class EntityResolver implements MappingNamespace, Serializable {
     }
 
     public Procedure getProcedure(String procedureName) {
+        checkMappingCache();
+
         Procedure result = mappingCache.getProcedure(procedureName);
         if (result == null) {
             // reconstruct cache just in case some of the datamaps
@@ -303,8 +315,9 @@ public class EntityResolver implements MappingNamespace, Serializable {
      * Returns a named query or null if no query exists for a given name.
      */
     public Query getQuery(String name) {
-        Query result = mappingCache.getQuery(name);
+        checkMappingCache();
 
+        Query result = mappingCache.getQuery(name);
         if (result == null) {
             // reconstruct cache just in case some of the datamaps
             // have changed and now contain the required information
@@ -318,8 +331,9 @@ public class EntityResolver implements MappingNamespace, Serializable {
      * @since 3.0
      */
     public Embeddable getEmbeddable(String className) {
-        Embeddable result = mappingCache.getEmbeddable(className);
+        checkMappingCache();
 
+        Embeddable result = mappingCache.getEmbeddable(className);
         if (result == null) {
             // reconstruct cache just in case some of the datamaps
             // have changed and now contain the required information
@@ -334,8 +348,9 @@ public class EntityResolver implements MappingNamespace, Serializable {
      * @since 3.0
      */
     public SQLResult getResult(String name) {
-        SQLResult result = mappingCache.getResult(name);
+        checkMappingCache();
 
+        SQLResult result = mappingCache.getResult(name);
         if (result == null) {
             // reconstruct cache just in case some of the datamaps
             // have changed and now contain the required information
@@ -349,7 +364,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
     /**
      * Returns ClassDescriptor for the ObjEntity matching the name. Returns null
      * if no matching entity exists.
-     * 
+     *
      * @since 1.2
      */
     public ClassDescriptor getClassDescriptor(String entityName) {
@@ -370,7 +385,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
 
     /**
      * Removes all entity mappings from the cache.
-     * 
+     *
      * @deprecated since 4.0 in favor of {@link #refreshMappingCache()}.
      */
     @Deprecated
@@ -378,10 +393,16 @@ public class EntityResolver implements MappingNamespace, Serializable {
         refreshMappingCache();
     }
 
+    private void checkMappingCache() {
+        if (mappingCache == null) {
+            refreshMappingCache();
+        }
+    }
+
     /**
      * Refreshes entity cache to reflect the current state of the DataMaps in
      * the EntityResolver.
-     * 
+     *
      * @since 4.0
      */
     public void refreshMappingCache() {
@@ -430,9 +451,9 @@ public class EntityResolver implements MappingNamespace, Serializable {
      * @since 4.0
      */
     public EntityInheritanceTree getInheritanceTree(String entityName) {
+        checkMappingCache();
 
         EntityInheritanceTree tree = mappingCache.getInheritanceTree(entityName);
-
         if (tree == null) {
             // since we keep inheritance trees for all entities, null means
             // unknown entity...
@@ -458,13 +479,15 @@ public class EntityResolver implements MappingNamespace, Serializable {
     /**
      * Looks in the DataMap's that this object was created with for the
      * ObjEntity that maps to the services the specified class
-     * 
+     *
      * @return the required ObjEntity or null if there is none that matches the
      *         specifier
-     * 
+     *
      * @since 4.0
      */
     public ObjEntity getObjEntity(Class<?> entityClass) {
+        checkMappingCache();
+
         ObjEntity result = mappingCache.getObjEntity(entityClass);
         if (result == null) {
             // reconstruct cache just in case some of the datamaps
@@ -484,6 +507,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
     }
 
     public ObjEntity getObjEntity(Persistent object) {
+        checkMappingCache();
         return mappingCache.getObjEntity(object);
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/cayenne-server/src/test/java/org/apache/cayenne/remote/hessian/service/HessianServiceTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/remote/hessian/service/HessianServiceTest.java b/cayenne-server/src/test/java/org/apache/cayenne/remote/hessian/service/HessianServiceTest.java
index 7e18c2d..590651d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/remote/hessian/service/HessianServiceTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/remote/hessian/service/HessianServiceTest.java
@@ -19,13 +19,9 @@
 
 package org.apache.cayenne.remote.hessian.service;
 
-import static org.junit.Assert.assertSame;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpSession;
-
+import com.caucho.services.server.ServiceContext;
+import com.mockrunner.mock.web.MockHttpServletRequest;
+import com.mockrunner.mock.web.MockHttpSession;
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.configuration.Constants;
@@ -33,9 +29,11 @@ import org.apache.cayenne.configuration.ObjectContextFactory;
 import org.apache.cayenne.event.MockEventBridgeFactory;
 import org.junit.Test;
 
-import com.caucho.services.server.ServiceContext;
-import com.mockrunner.mock.web.MockHttpServletRequest;
-import com.mockrunner.mock.web.MockHttpSession;
+import javax.servlet.http.HttpSession;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertSame;
 
 public class HessianServiceTest {
 
@@ -66,7 +64,7 @@ public class HessianServiceTest {
 		request.getSession();
 
 		try {
-			ServiceContext.begin(request, null, null);
+			ServiceContext.begin(request, null, null, null);
 			assertSame(session, service.getSession(false));
 		} finally {
 			ServiceContext.end();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/docs/doc/pom.xml
----------------------------------------------------------------------
diff --git a/docs/doc/pom.xml b/docs/doc/pom.xml
index 4039cd4..15a4146 100644
--- a/docs/doc/pom.xml
+++ b/docs/doc/pom.xml
@@ -64,7 +64,7 @@
 
 		<dependency>
 			<groupId>com.caucho</groupId>
-			<artifactId>resin-hessian</artifactId>
+            <artifactId>hessian</artifactId>
 		</dependency>
 
 		<dependency>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index dbd832b..5adbcc7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -328,13 +328,13 @@
                 <artifactId>commons-pool2</artifactId>
                 <version>2.4.2</version>
             </dependency>
-			<dependency>
-				<groupId>com.caucho</groupId>
-				<artifactId>resin-hessian</artifactId>
-				<version>3.1.6</version>
-				<scope>provided</scope>
-			</dependency>
-			<dependency>
+            <dependency>
+                <groupId>com.caucho</groupId>
+                <artifactId>hessian</artifactId>
+                <version>4.0.38</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
 				<groupId>jgoodies</groupId>
 				<artifactId>forms</artifactId>
 				<version>1.0.5</version>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/tutorials/tutorial-rop-client/pom.xml
----------------------------------------------------------------------
diff --git a/tutorials/tutorial-rop-client/pom.xml b/tutorials/tutorial-rop-client/pom.xml
index 483fd2d..ecbac8c 100644
--- a/tutorials/tutorial-rop-client/pom.xml
+++ b/tutorials/tutorial-rop-client/pom.xml
@@ -32,7 +32,7 @@
 		</dependency>
 		<dependency>
 			<groupId>com.caucho</groupId>
-			<artifactId>resin-hessian</artifactId>
+            <artifactId>hessian</artifactId>
 		</dependency>
 	</dependencies>
 	

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9cee90a2/tutorials/tutorial-rop-server/pom.xml
----------------------------------------------------------------------
diff --git a/tutorials/tutorial-rop-server/pom.xml b/tutorials/tutorial-rop-server/pom.xml
index 3c3eec2..97603a9 100644
--- a/tutorials/tutorial-rop-server/pom.xml
+++ b/tutorials/tutorial-rop-server/pom.xml
@@ -37,7 +37,7 @@
 		</dependency>
 		<dependency>
 			<groupId>com.caucho</groupId>
-			<artifactId>resin-hessian</artifactId>
+            <artifactId>hessian</artifactId>
 		</dependency>
 	</dependencies>