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>