Ofbiz错误:找不到简单方法

时间:2015-11-24 08:25:33

标签: java ofbiz

我在ofbiz.log

中反复出现此错误
Error running the simple-method: Could not find <simple-method name="checkProductRelatedPermission"> in XML document

这很奇怪,因为我在ProductServices.xml中声明了这种方法:<simple-method method-name="checkProductRelatedPermission" short-description="Check Product Related Permission">

之前我没有遇到此错误,系统正常运行6个月。 (目前产品指数正在增加)

是否与为thebiz分配的内存不足有关?因为服务器在有限的内存上运行。

[更新]

这是ProductServices.xml

中的服务声明
<simple-method method-name="productGenericPermission" short-description="Main permission logic">
        <set field="mainAction" from-field="parameters.mainAction"/>
        <if-empty field="mainAction">
            <add-error>
                <fail-property resource="ProductUiLabels" property="ProductMissingMainActionInPermissionService"/>
            </add-error>
            <check-errors/>
        </if-empty>

        <set field="callingMethodName" from-field="parameters.resourceDescription"/>
        <set field="checkAction" from-field="parameters.mainAction"/>
        <call-simple-method method-name="checkProductRelatedPermission"/>

        <if-empty field="error_list">
            <set field="hasPermission" type="Boolean" value="true"/>
            <field-to-result field="hasPermission"/>

            <else>
                <property-to-field resource="ProductUiLabels" property="ProductPermissionError" field="failMessage"/>
                <set field="hasPermission" type="Boolean" value="false"/>
                <field-to-result field="hasPermission"/>
                <field-to-result field="failMessage"/>
            </else>
        </if-empty>
    </simple-method>

执行<call-simple-method method-name="checkProductRelatedPermission"/>抛出异常。

如果我重新启动服务器,则同一个进程的执行不会抛出此异常。用户大量输入新产品和更新产品后发生错误。我可以在日志中看到重的lucene进程。

我将服务器内存从2GB增加到4GB,java内存Xmx:1024m到Xmx:1512。目前,经过6小时的监控后,ofbiz仍然正常运行。

[更新]

java.net.URL url = new java.net.URL("file:/home/ofbiz/ofbiz/applications/product/script/org/ofbiz/product/product/ProductServices.xml");
System.out.println(org.ofbiz.minilang.SimpleMethod.getSimpleMethod(url, "checkProductRelatedPermission"));

输出是简单的方法,这意味着找到了方法。

此外,相同的进程执行数千次并且在数千次执行(随机)之后抛出错误。几个小时后的某个时间,几天后的某个时间。

2 个答案:

答案 0 :(得分:0)

xml中的声明使用&#34; method-name&#34;。错误消息显示您缺少带有&#34; name&#34;的标记。

答案 1 :(得分:0)

配置没有问题。问题是JobSandbox(createAlsoBoughtProductAssocs)有许多正在运行的实例,挂起和排队的实例。这些作业消耗所有内存并使CPU使用率很高。 删除了createAlsoBoughtProductAssocs作业和问题消失了。