summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/src/main/java/Ice/ConnectionI.java22
-rw-r--r--java/src/Ice/src/main/java/Ice/ObjectAdapterI.java23
-rw-r--r--java/src/Ice/src/main/java/IceInternal/BasicStream.java7
-rw-r--r--java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java14
-rw-r--r--java/src/Ice/src/main/java/IceInternal/Instance.java6
5 files changed, 46 insertions, 26 deletions
diff --git a/java/src/Ice/src/main/java/Ice/ConnectionI.java b/java/src/Ice/src/main/java/Ice/ConnectionI.java
index cfef2312b11..57ec2b58b49 100644
--- a/java/src/Ice/src/main/java/Ice/ConnectionI.java
+++ b/java/src/Ice/src/main/java/Ice/ConnectionI.java
@@ -1103,9 +1103,9 @@ public final class ConnectionI extends IceInternal.EventHandler
{
throw new Ice.IllegalMessageSizeException();
}
- if(size > _instance.messageSizeMax())
+ if(size > _messageSizeMax)
{
- IceInternal.Ex.throwMemoryLimitException(size, _instance.messageSizeMax());
+ IceInternal.Ex.throwMemoryLimitException(size, _messageSizeMax);
}
if(size > _readStream.size())
{
@@ -1625,8 +1625,8 @@ public final class ConnectionI extends IceInternal.EventHandler
}
public ConnectionI(Communicator communicator, IceInternal.Instance instance, IceInternal.ACMMonitor monitor,
- IceInternal.Transceiver transceiver, IceInternal.Connector connector, IceInternal.EndpointI endpoint,
- ObjectAdapter adapter)
+ IceInternal.Transceiver transceiver, IceInternal.Connector connector,
+ IceInternal.EndpointI endpoint, ObjectAdapterI adapter)
{
_communicator = communicator;
_instance = instance;
@@ -1659,6 +1659,7 @@ public final class ConnectionI extends IceInternal.EventHandler
_acmLastActivity = -1;
}
_nextRequestId = 1;
+ _messageSizeMax = adapter != null ? adapter.messageSizeMax() : instance.messageSizeMax();
_batchAutoFlushSize = _instance.batchAutoFlushSize();
_batchStream = new IceInternal.BasicStream(instance, IceInternal.Protocol.currentProtocolEncoding);
_batchStreamInUse = false;
@@ -1684,9 +1685,9 @@ public final class ConnectionI extends IceInternal.EventHandler
}
_compressionLevel = compressionLevel;
- if(_adapter != null)
+ if(adapter != null)
{
- _servantManager = ((ObjectAdapterI) _adapter).getServantManager();
+ _servantManager = adapter.getServantManager();
}
else
{
@@ -1695,9 +1696,9 @@ public final class ConnectionI extends IceInternal.EventHandler
try
{
- if(_adapter != null)
+ if(adapter != null)
{
- _threadPool = ((ObjectAdapterI) _adapter).getThreadPool();
+ _threadPool = adapter.getThreadPool();
}
else
{
@@ -2518,7 +2519,7 @@ public final class ConnectionI extends IceInternal.EventHandler
{
if(IceInternal.BasicStream.compressible())
{
- info.stream = info.stream.uncompress(IceInternal.Protocol.headerSize);
+ info.stream = info.stream.uncompress(IceInternal.Protocol.headerSize, _messageSizeMax);
}
else
{
@@ -3120,7 +3121,8 @@ public final class ConnectionI extends IceInternal.EventHandler
private LocalException _exception;
- private int _batchAutoFlushSize;
+ private final int _messageSizeMax;
+ private final int _batchAutoFlushSize;
private IceInternal.BasicStream _batchStream;
private boolean _batchStreamInUse;
private int _batchRequestNum;
diff --git a/java/src/Ice/src/main/java/Ice/ObjectAdapterI.java b/java/src/Ice/src/main/java/Ice/ObjectAdapterI.java
index 9837175bccc..d00a347731a 100644
--- a/java/src/Ice/src/main/java/Ice/ObjectAdapterI.java
+++ b/java/src/Ice/src/main/java/Ice/ObjectAdapterI.java
@@ -857,6 +857,13 @@ public final class ObjectAdapterI implements ObjectAdapter
return _acm;
}
+ public int
+ messageSizeMax()
+ {
+ // No mutex lock, immutable.
+ return _messageSizeMax;
+ }
+
//
// Only for use by IceInternal.ObjectAdapterFactory
//
@@ -879,6 +886,7 @@ public final class ObjectAdapterI implements ObjectAdapter
_replicaGroupId = "";
_reference = _instance.referenceFactory().create("dummy -t", "");
_acm = _instance.serverACM();
+ _messageSizeMax = _instance.messageSizeMax();
return;
}
@@ -940,6 +948,19 @@ public final class ObjectAdapterI implements ObjectAdapter
_acm = new IceInternal.ACMConfig(properties, communicator.getLogger(), _name + ".ACM", instance.serverACM());
+ {
+ final int defaultMessageSizeMax = instance.messageSizeMax() / 1024;
+ int num = properties.getPropertyAsIntWithDefault(_name + ".MessageSizeMax", defaultMessageSizeMax);
+ if(num < 1 || num > 0x7fffffff / 1024)
+ {
+ _messageSizeMax = 0x7fffffff;
+ }
+ else
+ {
+ _messageSizeMax = num * 1024; // Property is in kilobytes, _messageSizeMax in bytes
+ }
+ }
+
try
{
int threadPoolSize = properties.getPropertyAsInt(_name + ".ThreadPool.Size");
@@ -1519,6 +1540,7 @@ public final class ObjectAdapterI implements ObjectAdapter
"Locator.PreferSecure",
"Locator.CollocationOptimized",
"Locator.Router",
+ "MessageSizeMax",
"PublishedEndpoints",
"RegisterProcess",
"ReplicaGroupId",
@@ -1614,4 +1636,5 @@ public final class ObjectAdapterI implements ObjectAdapter
private int _directCount; // The number of direct proxies dispatching on this object adapter.
private boolean _noConfig;
private Identity _processId = null;
+ private final int _messageSizeMax;
}
diff --git a/java/src/Ice/src/main/java/IceInternal/BasicStream.java b/java/src/Ice/src/main/java/IceInternal/BasicStream.java
index 82d84110cb9..58620c59170 100644
--- a/java/src/Ice/src/main/java/IceInternal/BasicStream.java
+++ b/java/src/Ice/src/main/java/IceInternal/BasicStream.java
@@ -1,4 +1,3 @@
-
// **********************************************************************
//
// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
@@ -2637,7 +2636,7 @@ public class BasicStream
}
public BasicStream
- uncompress(int headerSize)
+ uncompress(int headerSize, int messageSizeMax)
{
assert(compressible());
@@ -2647,9 +2646,9 @@ public class BasicStream
{
throw new Ice.IllegalMessageSizeException();
}
- if(uncompressedSize > _instance.messageSizeMax())
+ if(uncompressedSize > messageSizeMax)
{
- IceInternal.Ex.throwMemoryLimitException(uncompressedSize, _instance.messageSizeMax());
+ IceInternal.Ex.throwMemoryLimitException(uncompressedSize, messageSizeMax);
}
int compressedLen = size() - headerSize - 4;
diff --git a/java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java b/java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java
index e1d3daa6b18..e0a62027edf 100644
--- a/java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java
+++ b/java/src/Ice/src/main/java/IceInternal/IncomingConnectionFactory.java
@@ -363,14 +363,14 @@ public final class IncomingConnectionFactory extends EventHandler implements Ice
}
public
- IncomingConnectionFactory(Instance instance, EndpointI endpoint, Ice.ObjectAdapter adapter, String adapterName)
+ IncomingConnectionFactory(Instance instance, EndpointI endpoint, Ice.ObjectAdapterI adapter, String adapterName)
{
_instance = instance;
_endpoint = endpoint;
_adapter = adapter;
_warn = _instance.initializationData().properties.getPropertyAsInt("Ice.Warn.Connections") > 0 ? true : false;
_state = StateHolding;
- _monitor = new FactoryACMMonitor(instance, ((Ice.ObjectAdapterI)adapter).getACM());
+ _monitor = new FactoryACMMonitor(instance, adapter.getACM());
DefaultsAndOverrides defaultsAndOverrides = _instance.defaultsAndOverrides();
if(defaultsAndOverrides.overrideTimeout)
@@ -430,7 +430,7 @@ public final class IncomingConnectionFactory extends EventHandler implements Ice
_instance.initializationData().logger.trace(_instance.traceLevels().networkCat, s.toString());
}
- ((Ice.ObjectAdapterI)_adapter).getThreadPool().initialize(this);
+ _adapter.getThreadPool().initialize(this);
}
}
catch(java.lang.Exception ex)
@@ -531,7 +531,7 @@ public final class IncomingConnectionFactory extends EventHandler implements Ice
s.append(_acceptor.toString());
_instance.initializationData().logger.trace(_instance.traceLevels().networkCat, s.toString());
}
- ((Ice.ObjectAdapterI)_adapter).getThreadPool().register(this, SocketOperation.Read);
+ _adapter.getThreadPool().register(this, SocketOperation.Read);
}
for(Ice.ConnectionI connection : _connections)
@@ -557,7 +557,7 @@ public final class IncomingConnectionFactory extends EventHandler implements Ice
s.append(_acceptor.toString());
_instance.initializationData().logger.trace(_instance.traceLevels().networkCat, s.toString());
}
- ((Ice.ObjectAdapterI)_adapter).getThreadPool().unregister(this, SocketOperation.Read);
+ _adapter.getThreadPool().unregister(this, SocketOperation.Read);
}
for(Ice.ConnectionI connection : _connections)
@@ -577,7 +577,7 @@ public final class IncomingConnectionFactory extends EventHandler implements Ice
// if there are no more threads in the thread pool available to dispatch
// the finish() call.
//
- if(((Ice.ObjectAdapterI)_adapter).getThreadPool().finish(this, true))
+ if(_adapter.getThreadPool().finish(this, true))
{
closeAcceptor(true);
}
@@ -633,7 +633,7 @@ public final class IncomingConnectionFactory extends EventHandler implements Ice
private Transceiver _transceiver;
private EndpointI _endpoint;
- private Ice.ObjectAdapter _adapter;
+ private Ice.ObjectAdapterI _adapter;
private final boolean _warn;
diff --git a/java/src/Ice/src/main/java/IceInternal/Instance.java b/java/src/Ice/src/main/java/IceInternal/Instance.java
index 8085635ad04..ebe7dd118df 100644
--- a/java/src/Ice/src/main/java/IceInternal/Instance.java
+++ b/java/src/Ice/src/main/java/IceInternal/Instance.java
@@ -892,11 +892,7 @@ public final class Instance
{
final int defaultMessageSizeMax = 1024;
int num = _initData.properties.getPropertyAsIntWithDefault("Ice.MessageSizeMax", defaultMessageSizeMax);
- if(num < 1)
- {
- _messageSizeMax = defaultMessageSizeMax * 1024; // Ignore non-sensical values.
- }
- else if(num > 0x7fffffff / 1024)
+ if(num < 1 || num > 0x7fffffff / 1024)
{
_messageSizeMax = 0x7fffffff;
}