[rules-users] Web Service deploy out of memory

Edgardo edgardoibanez at gmail.com
Tue Sep 4 09:36:45 EDT 2007


Thanks Michael, the problem was that every call to the web service create  
a new instance of ValidaLlamadaWS, because the system memory explode!. I  
fix it managing the session scope of the Web Service, now my drools + web  
service implementation works fine!

Thanks for you reply

Greetings, I see you in another post

En Tue, 04 Sep 2007 01:44:47 -0400, Michael Neale  
<michael.neale at gmail.com> escribió:

> If it still happens - it would be good if you could attach some code to
> reproduce it to a JIRA.
>
> On 9/4/07, Michael Neale <michael.neale at gmail.com> wrote:
>>
>> Hi Edgardo.
>>
>> Well it shouldn't leak like that.
>>
>> Looking at your code, I am not sure how it works (as I am not sure of  
>> the
>> Web Service component you are using).
>>
>> But if the web service is creating a new instance of the ValidaLlamadaWS
>> class for EACH call, then yes that woudl be the problem. What you want  
>> to do
>> is have the code for the agend called only once, on startup, and then  
>> use
>> that single instance of the agent to get a rulebase for each call.
>>
>>
>> Michael.
>>
>> On 9/4/07, Edgardo <edgardoibanez at gmail.com> wrote:
>> >
>> > Hi list,
>> >
>> >      I have developed a web service for deploy my rule package, this
>> > rule
>> > package is in the BRMS, the source code of the web service class is:
>> >
>> > public class ValidaLlamadaWS {
>> >
>> >         RuleAgent agent = RuleAgent.newRuleAgent
>> > ("/brmsdeployedrules.properties");
>> >         RuleBase ruleBase = agent.getRuleBase();
>> >         StatelessSession session = ruleBase.newStatelessSession();
>> >
>> >         public Object[] ValidaLlamada(Integer cantsegundos){
>> >                 Validaciones validaciones = new Validaciones();
>> >                 validaciones.setCantsegundos(cantsegundos);
>> >
>> >                 session.execute(validaciones);
>> >
>> >                 return validaciones.getResult ();
>> >         }
>> > }
>> >
>> > The BRMS run over JBoss AS 4.2.1.GA and the web service over Apache
>> > Tomcat
>> > 5.5 on the same machine, the rule base contain only 2 rules
>> >
>> > The problem is that I need to call the web service more than 400.000
>> > times, and with 1000 times, I obtain the Java Heap Exception.
>> > If I monitoring my machine memory, this only increase between calls.  
>> And
>> > the process that more memory expensive is java.exe (JBoss AS  
>> 4.2.1.GA).
>> > The process javaw.exe (Apache Tomcat 5.5)also is expensive, but less
>> > than
>> > java.exe
>> >
>> > The question are:
>> >
>> > How I can "dispose" the objects that I use?
>> > Is correct this use for StatelessSession?
>> > You are the experts, any other idea for implement my web service?
>> >
>> > PD: sorry for my bad english.
>> >
>> > Greetings
>> >
>> >
>> >
>> > --
>> > Edgardo Ibañez O.
>> > _______________________________________________
>> > rules-users mailing list
>> > rules-users at lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/rules-users
>> >
>>
>>



-- 
Edgardo Ibañez O.



More information about the rules-users mailing list