[jBPM] New message: "Re: How to submit modifications em jBPM BPEL source code"
by Carlos Oliveira
User development,
A new message was posted in the thread "How to submit modifications em jBPM BPEL source code":
http://community.jboss.org/message/522152#522152
Author : Carlos Oliveira
Profile : http://community.jboss.org/people/karluqs
Message:
--------------------------------------------------------------
Here the list of modifications:
- The architecture based on JMS didn't support thousands of process instances in receive state (tested with 50000 process), it caused high memory consumption (25GB) and several minutes waiting jboss to start to load all jms receivers (about 20 minutes on a server with 12 cores and Oracle 10g). We removed JMS parts and altered to query the database when receiving a message to continue a process . This caused the loss of asynchronous messages which are not necessary for us . Another solution will be required if someone needs to use of asynchronous messages.
- Performance was degradated when executed hundreds of processes at same time causing crashes on JBoss. A ThreadPoolExecutor was added to SoapHandler.java to limit the number of processes executing at same time. This can be configured.
- Added a class to provide a central configuration for JBPM (ConfigurationManager.java), this classes uses Jgroups to replicate configuration modifications on runtime.
- Added static map (PROCESSES_IN_EXECUTION on JbpmContext.java) to provide a way to the cluster doesn't execute the same process at the same time. JGroups was added to support sending of messages between the machines to provide information about which processes are running.
- Added support for 2nd level cache cluster using EhCache and Jgroups, configuration on jbpm.hibernate.cfg.xml and ehcache_jbpm.xml
- Inclusion of table JBPM_NODE_EXECUTED, to track the path a process instance followed on bpel graph, we tried to use JBPM_TOKEN but it's unpredictable and confuse to track a path.
- XMLs messages with quotes (" and ') has several issues when parsing to and from xerces, the quotes are lost due to the fact that XMLUtil.java encodes & to &amp;. This happens with other characters (>, <, space, -, & and #). It was necessary to modify ElementType.java to properly encode/unencode the xml files.
- Added support to XSL transformations using javax.xml.transform.Transformer in org.jbpm.bpel.sublang.xpath.cpqd.XSLTransformation file. The deploy of processes was altered to include xsd files on table JBPM_BYTEBLOCK
- JBPM_JOB has a design problem, it executes only one process by cycle, altered to execute as many as necessary, each one in a transaction with crash recovery. Also added a class to monitor
- Use of JBPM_LOG was altered, studies of database growth showed that this table was responsible for 30% of all database, so a configuration was added to choose to log or not to log, see DbLoggingService.java
- If a process crashes , the transaction is rolled back depending on exception type so all the graph is lost and if the process passed for a node that cannot be executed again the message can't be resended. StartInstance and ResumeInstance was rewritten to provide means to always save data.
- Added Xpath function to send email based on a xml with the data (org.jbpm.bpel.sublang.xpath.cpqd.SendEmail)
- When assigning a node that has several sub nodes with the same name, only the first node is assigned. XPathEvaluator.java (method selectOrCreateNodes) was fixed.
- When copying xmls nodes between different xmls namespace, the original namespaces are copied also. XPathEvaluator.java was fixed.
- LockMonitorThread.java monitors when a job is executing for a long time, but was not full implemented or used, it was modified to properly monitor the jobs.
- ByteBlockChopper.java had performance issues when glueing the chops because it created a new array for each chop, altered to create only one initial array and glue the chops in the right position.
- Added class JbossWebDescriptorTool.java on JBPM-BPEL-TOOLS, this class creates a jboss-web.xml to provide one context (/jbpmservices) for all processes deployed.
- The .war file deployed does not have version information, this causes the old processes instances crashs, JBPM-BPEL-TOOLS to provide version information on classes generated and file names.
- On deploying a process definition create classes without using namespace for packaging, it causes a crash because of confliting xml nodes with the same name, modified to create packages for each namespace.
- Added column STATE_ to JBPM_PROCESSDEFINITION table, the definition is put in a activing state when deploying, so a process can be deployed with jbpm in use and the users can not access it until .war file is fully deployed.
- CatalogEntry is cached when used for the first time, so an external web service address could not be modified on runtime. The class was modified to support notification of urls for all the process using the addresses on ServiceCatalog.java, even in cluster.
--------------------------------------------------------------
To reply to this message visit the message page: http://community.jboss.org/message/522152#522152
16 years, 3 months
[JBoss Cache POJO Edition] New message: "pojocache-aop.xml doesn't work in jboss AS 5.1"
by Frank Cheng
User development,
A new message was posted in the thread "pojocache-aop.xml doesn't work in jboss AS 5.1":
http://community.jboss.org/message/522150#522150
Author : Frank Cheng
Profile : http://community.jboss.org/people/chengsuntx
Message:
--------------------------------------------------------------
I am trying to follow the tutorial of jboss-cache-pojo-tutorial to make PojoCache working in Jboss AS 5.1. I copied replSync-service.xml to C:\jboss-5.1.0.GA\server\all\deploy\cluster\jboss-cache-manager.sar\META-INF. Then copied pojocache-aop.xml to C:\jboss-5.1.0.GA\server\all\deploy, and added a VM argument -Djboss.aop.path="C:\jboss-5.1.0.GA\server\all\deploy\pojocache-aop.xml". Jboss started successfully on all mode, the pojoCache can be started, but when calling cache.attach, it throws exception complaining Person object hasn't been instrumented even though Person class is annoted as Replicable. Here is the stacktrace:
13:54:38,209 INFO [PojoCacheImpl] PojoCache version: JBossCache 'Cascabel' 3.1.0.GA
13:54:46,738 ERROR [STDERR]
org.jboss.cache.pojo.PojoCacheException: attach failed /pojo/joe13:54:46,748 ERROR [STDERR] at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(
PojoCacheImpl.java:111)13:54:46,748 ERROR [STDERR] at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(
PojoCacheImpl.java:93)13:54:46,748 ERROR [STDERR] at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(
PojoCacheImpl.java:88)13:54:46,758 ERROR [STDERR] at library.servlets.CreateUser.init(
CreateUser.java:72)13:54:46,758 ERROR [STDERR] at org.apache.catalina.core.StandardWrapper.loadServlet(
StandardWrapper.java:1048)13:54:46,758 ERROR [STDERR] at org.apache.catalina.core.StandardWrapper.allocate(
StandardWrapper.java:777)13:54:46,758 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:129)13:54:46,759 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:191)13:54:46,759 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(
SecurityAssociationValve.java:190)13:54:46,759 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(
JaccContextValve.java:92)13:54:46,759 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(
SecurityContextEstablishmentValve.java:126)13:54:46,759 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(
SecurityContextEstablishmentValve.java:70)13:54:46,759 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:127)13:54:46,759 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:102)13:54:46,759 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(
CachedConnectionValve.java:158)13:54:46,759 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:109)13:54:46,760 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(
CoyoteAdapter.java:330)13:54:46,761 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(
Http11Processor.java:829)13:54:46,762 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
Http11Protocol.java:598)13:54:46,763 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(
JIoEndpoint.java:447)13:54:46,764 ERROR [STDERR] at java.lang.Thread.run(Unknown Source)
13:54:46,765 ERROR [STDERR] Caused by:
org.jboss.cache.CacheException: *Can not manage object. It must be either instrumented, a collection, an array, or Serializable: library.servlets.Person*13:54:46,766 ERROR [STDERR] at org.jboss.cache.pojo.impl.PojoCacheDelegate.getHandler(
PojoCacheDelegate.java:168)13:54:46,767 ERROR [STDERR] at org.jboss.cache.pojo.impl.PojoCacheDelegate.putObject(
PojoCacheDelegate.java:122)13:54:46,768 ERROR [STDERR] at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(
PojoCacheImpl.java:102)13:54:46,769 ERROR [STDERR] ... 20 more
Looks like jboss couldn't instrument the object using pojocache-aop.xml. Any ideas?
--------------------------------------------------------------
To reply to this message visit the message page: http://community.jboss.org/message/522150#522150
16 years, 3 months
[jBPM] New message: "How to submit modifications em jBPM BPEL source code"
by Carlos Oliveira
User development,
A new message was posted in the thread "How to submit modifications em jBPM BPEL source code":
http://community.jboss.org/message/522149#522149
Author : Carlos Oliveira
Profile : http://community.jboss.org/people/karluqs
Message:
--------------------------------------------------------------
Hi,
I'm from Brazil, and I work for CPqD, an enterprise who provides software solutions and consultancy for the telecom and energy market.
Recently we choose to install and use jBPM BPEL to integrate some systems in the production environment of one of our customers, but a lot of changes were demanded to attend the high volume of processes and the performance requirements that the production environment demands. Every day thousands of processes are created and stay in execution for some days util they are finally finished, so performance, hardware resources consumption and reliability were our main concerns.
To provide that, I have made a huge modification in the jBPM BPEL 1.1.1 source code, fixing bugs and doing a lot of otimizations and performance improvements. The modifications were tested by our team, and the result is running at the production environment today, so the modification were very successful.
Now we want to send the modified code to the jBPM BPEL project. How can I do that ? What is the procedure to be followed?
Thanks,
Carlos
--------------------------------------------------------------
To reply to this message visit the message page: http://community.jboss.org/message/522149#522149
16 years, 3 months
[JNDI and Naming] New message: "Re: Name lookup fails, reason unknown"
by Timothy Mowlem
User development,
A new message was posted in the thread "Name lookup fails, reason unknown":
http://community.jboss.org/message/522148#522148
Author : Timothy Mowlem
Profile : http://community.jboss.org/people/jvm
Message:
--------------------------------------------------------------
Hello Peter,
Wow quick response. Thank you.
I am contracting with a client and so client confidentiality prevents me from posting actual code or details of the app but I will try and generalize by using:
<myapp> = name of the ear file, e.g. aaa for aaa.ear
<myfacade> = class name of remote interface class
<package> = java package
I have transcribed these for the actual output below.
(A) console output
I see the following output suggesting that maybe JNDI is binding the bean where I think:
17:25:50,129 INFO [SessionSpecContainer] Starting jboss.j2ee:ear=myapp.ear,jar=beans.jar,name=myfacade,service=EJB3
17:25:50,130 INFO [EJBContainer] STARTED EJB: <package>.myfacadeRemoteBean ejbName: myfacade
17:25:50,159 INFO [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:
myapp/myfacade/remote - EJB3.x Default Remote Business Interface
myapp/myfacade/remote-<package>.myfacade - EJB3.x Remote Business Interface
(B) JNDIView global namespace shows
I see:
myfacade (class: org.jnp.interfaces.NamingContext)
+- remote (class: Proxy for: package.interfaces.myfacade)
+- remote-package.interfaces.myfacade (class: Proxy for: package.interfaces.myfacade)
(C) Code
I think that the name being looked up is correct. The name being looked up is "<myapp>/<myfacade>/remote"
Looking in the Reference object that is returned I see:
Reference Class Name: Proxy for: <package>.interfaces.myfacade
Type: ProxyFactoryKey
Content: ProxyFactory/myapp/myfacade/myapp/myfacade/remote
Type: EJB Container Name
Content: jboss.j2ee:ear=myapp.ear,jar=beans.jar,name=myfacade,service=EJB3
Type: Proxy Factory is Local
Content: false
Type: Remote Business Interface
Content: <package>.interfaces.myfacade
Type: Remoting Host URL
Content: socket://127.0.0.1:3873/
(D) There are two other things I should mention:
(1) The remote interface class extends all of the other bean interfaces so it is a super remote to all of the other bean interfaces.
The corresponding bean implementation class has a set of:
@EJB(beanName=<a name>)
private xyzManager xyzSession;
(2) The console log showed a warning:
17:25:51,445 INFO [Ejb3Configuration] Processing PersistenceUnitInfo [
name: myapp
...]
17:25:51,680 WARN [Ejb3Configuration] Persistence provider caller does not implement the EJB3 spec correctly. PersistenceUnitInfo.getNewTempClassLoader() is null.
Thank you.
--------------------------------------------------------------
To reply to this message visit the message page: http://community.jboss.org/message/522148#522148
16 years, 3 months
[jBPM] New message: "Re: Some questions and feedback from beginner"
by Ronald van Kuijk
User development,
A new message was posted in the thread "Some questions and feedback from beginner":
http://community.jboss.org/message/522146#522146
Author : Ronald van Kuijk
Profile : http://community.jboss.org/people/kukeltje
Message:
--------------------------------------------------------------
Hi,
> Isn't that true that jPDL is a kind of BPEL?! In fact it instructs the engine what needs to be done and when.
>
>
Sure, just like Cobol is a kind of java, it instructs a cpu to do things... So infact no... No comparison.
> I was wondering if there is how should it be understood - since BPMN is language independent,there is no item like java or sql, hql, etc.
No, it is not... It is Webservice oriented. There is a service task which in default implementation is a webservice one. Webservices are as much a 'language' (more interface) as a java one is. The fact that you can hava a java service task, or whatever is just hidden from view. Could have been done in jPDL to, but that choice was not made. An initial design could have just a state/node also in jPDL which later would become a java node by a developer... It's ALWAYS a joint effort (search for posts on this by Tom Baeyens)
--------------------------------------------------------------
To reply to this message visit the message page: http://community.jboss.org/message/522146#522146
16 years, 3 months