You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2010/02/26 09:01:22 UTC
svn commit: r916608 - in /ofbiz/trunk/framework/service:
config/service.properties src/org/ofbiz/service/ModelService.java
src/org/ofbiz/service/ModelServiceReader.java
src/org/ofbiz/service/ServiceDispatcher.java
Author: jacopoc
Date: Fri Feb 26 08:01:21 2010
New Revision: 916608
URL: http://svn.apache.org/viewvc?rev=916608&view=rev
Log:
Added flag to switch off the debug mode for services that is causing out of memory errors for JVM PermGen space.
Warning: the default setting is still set to true but it is highly recommended to set it to false, especially for non-development instances (production, demo etc...).
Modified:
ofbiz/trunk/framework/service/config/service.properties
ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java
ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java
ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
Modified: ofbiz/trunk/framework/service/config/service.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/config/service.properties?rev=916608&r1=916607&r2=916608&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/config/service.properties (original)
+++ ofbiz/trunk/framework/service/config/service.properties Fri Feb 26 08:01:21 2010
@@ -17,5 +17,7 @@
# under the License.
###############################################################################
+# If set to true then service definitions are wrapped with their filename and line number, for easier debugging; if enabled, JVM PermGen memory settings may need to be increased
+servicedispatcher.servicedebugmode=false
# flag to automatically export all services: same of setting export="true" for all service definitions
remotedispatcher.exportall=false
Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java?rev=916608&r1=916607&r2=916608&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java Fri Feb 26 08:01:21 2010
@@ -229,7 +229,9 @@
this.overrideParameters = model.overrideParameters;
this.inheritedParameters = model.inheritedParameters();
this.internalGroup = model.internalGroup;
- this.invoker = model.invoker.copy(this);
+ if (model.invoker != null) {
+ this.invoker = model.invoker.copy(this);
+ }
List<ModelParam> modelParamList = model.getModelParamList();
for (ModelParam param: modelParamList) {
Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java?rev=916608&r1=916607&r2=916608&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java Fri Feb 26 08:01:21 2010
@@ -38,6 +38,7 @@
import org.ofbiz.base.config.ResourceHandler;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilTimer;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.UtilXml;
@@ -65,6 +66,7 @@
public class ModelServiceReader implements Serializable {
public static final String module = ModelServiceReader.class.getName();
+ protected static boolean serviceDebugMode = true;
/** is either from a URL or from a ResourceLoader (through the ResourceHandler) */
protected boolean isFromURL;
@@ -93,6 +95,7 @@
this.readerURL = readerURL;
this.handler = handler;
this.dctx = dctx;
+ serviceDebugMode = "true".equals(UtilProperties.getPropertyValue("service", "servicedispatcher.servicedebugmode", "true"));
}
private Map<String, ModelService> getModelServices() {
@@ -202,20 +205,21 @@
ModelService service = new ModelService();
service.name = UtilXml.checkEmpty(serviceElement.getAttribute("name")).intern();
- Wrap<GenericInvoker> wrap = new Wrap<GenericInvoker>().fileName(resourceLocation + '#' + service.name).wrappedClass(GenericInvokerImpl.class);
- for (Method method: GenericInvokerImpl.class.getDeclaredMethods()) {
- if (method.getName().startsWith("run")) {
- wrap.wrap(method);
- } else if (method.getName().startsWith("send")) {
- wrap.wrap(method);
+ if (serviceDebugMode) {
+ Wrap<GenericInvoker> wrap = new Wrap<GenericInvoker>().fileName(resourceLocation + '#' + service.name).wrappedClass(GenericInvokerImpl.class);
+ for (Method method: GenericInvokerImpl.class.getDeclaredMethods()) {
+ if (method.getName().startsWith("run")) {
+ wrap.wrap(method);
+ } else if (method.getName().startsWith("send")) {
+ wrap.wrap(method);
+ }
}
+ Object startLine = serviceElement.getUserData("startLine");
+ if (startLine != null) {
+ wrap.lineNumber(((Integer) startLine).intValue());
+ }
+ service.invoker = wrap.newInstance(new Class<?>[] {ModelService.class}, new Object[] {service});
}
- Object startLine = serviceElement.getUserData("startLine");
- if (startLine != null) {
- wrap.lineNumber(((Integer) startLine).intValue());
- }
- service.invoker = wrap.newInstance(new Class<?>[] {ModelService.class}, new Object[] {service});
-
service.definitionLocation = resourceLocation;
service.engineName = UtilXml.checkEmpty(serviceElement.getAttribute("engine")).intern();
service.location = UtilXml.checkEmpty(serviceElement.getAttribute("location")).intern();
Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java?rev=916608&r1=916607&r2=916608&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java Fri Feb 26 08:01:21 2010
@@ -30,6 +30,7 @@
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.GeneralRuntimeException;
import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilTimer;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.UtilXml;
@@ -73,6 +74,7 @@
protected static boolean enableJM = true;
protected static boolean enableJMS = true;
protected static boolean enableSvcs = true;
+ protected static boolean serviceDebugMode = true;
protected Delegator delegator = null;
protected GenericEngineFactory factory = null;
@@ -121,6 +123,7 @@
if (enableSvcs) {
this.runStartupServices();
}
+ serviceDebugMode = "true".equals(UtilProperties.getPropertyValue("service", "servicedispatcher.servicedebugmode", "true"));
}
protected ServiceDispatcher(Delegator delegator) {
@@ -391,8 +394,14 @@
// ===== invoke the service =====
if (!isError && !isFailure) {
- Map<String, Object> invokeResult = modelService.invoker.runSync(localName, engine, context);
- modelService.invoker.sendCallbacks(engine, context, invokeResult, null, GenericEngine.SYNC_MODE);
+ Map<String, Object> invokeResult = null;
+ if (serviceDebugMode) {
+ invokeResult = modelService.invoker.runSync(localName, engine, context);
+ modelService.invoker.sendCallbacks(engine, context, invokeResult, null, GenericEngine.SYNC_MODE);
+ } else {
+ invokeResult = engine.runSync(localName, modelService, context);
+ engine.sendCallbacks(modelService, context, invokeResult, GenericEngine.SYNC_MODE);
+ }
if (invokeResult != null) {
result.putAll(invokeResult);
} else {
@@ -508,7 +517,11 @@
}
String errMsg = "Service [" + modelService.name + "] threw an unexpected exception/error";
Debug.logError(t, errMsg, module);
- modelService.invoker.sendCallbacks(engine, context, null, t, GenericEngine.SYNC_MODE);
+ if (serviceDebugMode) {
+ modelService.invoker.sendCallbacks(engine, context, null, t, GenericEngine.SYNC_MODE);
+ } else {
+ engine.sendCallbacks(modelService, context, t, GenericEngine.SYNC_MODE);
+ }
try {
TransactionUtil.rollback(beganTrans, errMsg, t);
} catch (GenericTransactionException te) {
@@ -694,8 +707,17 @@
// run the service
if (!isError && !isFailure) {
- service.invoker.runAsync(localName, engine, context, requester, persist);
- service.invoker.sendCallbacks(engine, context, null, null, GenericEngine.ASYNC_MODE);
+ if (serviceDebugMode) {
+ service.invoker.runAsync(localName, engine, context, requester, persist);
+ service.invoker.sendCallbacks(engine, context, null, null, GenericEngine.ASYNC_MODE);
+ } else {
+ if (requester != null) {
+ engine.runAsync(localName, service, context, requester, persist);
+ } else {
+ engine.runAsync(localName, service, context, persist);
+ }
+ engine.sendCallbacks(service, context, GenericEngine.ASYNC_MODE);
+ }
}
if (Debug.timingOn()) {
@@ -708,7 +730,11 @@
}
String errMsg = "Service [" + service.name + "] threw an unexpected exception/error";
Debug.logError(t, errMsg, module);
- service.invoker.sendCallbacks(engine, context, null, t, GenericEngine.ASYNC_MODE);
+ if (serviceDebugMode) {
+ service.invoker.sendCallbacks(engine, context, null, t, GenericEngine.ASYNC_MODE);
+ } else {
+ engine.sendCallbacks(service, context, t, GenericEngine.ASYNC_MODE);
+ }
try {
TransactionUtil.rollback(beganTrans, errMsg, t);
} catch (GenericTransactionException te) {
Re: svn commit: r916608 - in /ofbiz/trunk/framework/service: config/service.properties
src/org/ofbiz/service/ModelService.java src/org/ofbiz/service/ModelServiceReader.java
src/org/ofbiz/service/ServiceDispatcher.java
Posted by Adam Heath <do...@brainfood.com>.
jacopoc@apache.org wrote:
> Author: jacopoc
> Date: Fri Feb 26 08:01:21 2010
> New Revision: 916608
>
> URL: http://svn.apache.org/viewvc?rev=916608&view=rev
> Log:
> Added flag to switch off the debug mode for services that is causing out of memory errors for JVM PermGen space.
> Warning: the default setting is still set to true but it is highly recommended to set it to false, especially for non-development instances (production, demo etc...).
>
> Modified:
> ofbiz/trunk/framework/service/config/service.properties
> ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java
> ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java
> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
I would have done this slightly differently, by creating an invoker
that was a dummy class, so that you wouldn't have had to touch the
other classes. But your change appears fine to me.