[JBoss Tools] - JBoss Source Lookup Plugin Notes
by Snjezana Peco
Snjezana Peco [https://community.jboss.org/people/snjeza] created the document:
"JBoss Source Lookup Plugin Notes"
To view the document, visit: https://community.jboss.org/docs/DOC-17529
--------------------------------------------------------------
When debugging some Java application (JBoss AS server, for instance), one of the following three cases can happen:
* *Eclipse finds a source file*
This happens when Eclipse finds an archive containing source attachments.
The JBoss Source Lookup plugin doesn't work anything in this case.
* *Eclipse can't find any source, but can find the archive in which a class file is placed*
The editor action from the JBoss Lookup Source plugin tries to find a source file as follows:
The JBoss Source Container (getJars) isn't active in any of these cases.
This happens if a class file is placed in the classpath of the launch configuration (within the Server Runtime classpath included in the project's classpath, for instance).
** using the m2e API
** using the archive's metadata
** using a Nexus indexer (the sha1 query)
A user can disable/enable, add/remove, change Nexus repositories using the JBoss Source Lookup preferences.
* *Eclipse can't find any archive containing a class file*
This happens if a class file is placed in an archive that is not in the classpath of the launch configuration.
As to JBoss AS, that can be an archive that is not included in a JBoss AS Runtime Container or
if a JBoss AS Runtime Container isn't included in the project's classpath (it is often that JBoss AS Runtime Container isn't included in a maven project).
The JBoss Source Container (getJars) is active in this case only.
*
*
It scans JBoss AS home directory (or some other directory that a user enters when debugging Glassfish, Tomcat, running a Java Application, a JUnit test ...),
finds all archives (a file with *.jar suffix) and tries to find a class in some of those jars. If it finds the class in an archive,
the JBoss Source Lookup plugin tries to find the archive's source in the way described above.
getJars() will be called only if there isn't any other way to find binary file in which the class file is.
For one source container, getJar() will be called only once during a debug session. The archive list within a source container is cached.
For more details, see https://community.jboss.org/community/tools/blog/2012/01/24/jboss-source-... JBoss Source Lookup.
--------------------------------------------------------------
Comment by going to Community
[https://community.jboss.org/docs/DOC-17529]
Create a new document in JBoss Tools at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=102&c...]
12 years, 11 months
[Beginner's Corner] - Unable to instantiate class load helper class: org.quartz.simpl.CascadingClassLoadHelper cannot be cast to org.quartz.spi.ClassLoadHelper
by mtr3691
mtr3691 [https://community.jboss.org/people/mtr3691] created the discussion
"Unable to instantiate class load helper class: org.quartz.simpl.CascadingClassLoadHelper cannot be cast to org.quartz.spi.ClassLoadHelper"
To view the discussion, visit: https://community.jboss.org/message/649771#649771
--------------------------------------------------------------
I am running JBOSS 5.1.0 GA, which has Quartz embedded. I have an EAR file which is deployed and contains OSGi bundles within it. One of the bundles is a Quartz Open Symphony bundle which is used be web services for scheduling. All objects deploy successfully, but an error is thrown when the scheduler is instantiated...
public String start(SCHEDULE_DATA sd)
{
SD2XML sd2xml = new SD2XML();
String jobDescription = null;
if ( sd.JOB_NAME == null || sd.JOB_NAME.length() == 0) {
sd.JOB_NAME = UUID.randomUUID().toString();
}
initialize(sd);
logger.info("Starting scheduled job: "+sd.JOB_NAME + ", jobClass: "+sd.JOB_CLASS+", cron expression: "+sd.CRON_EXPRESSION);
if (validateInputs() && bindJobClass()) {
try {
sched = new StdSchedulerFactory().getScheduler();
} catch (SchedulerException e) {
logger.error(e.getLocalizedMessage());
sd.STATUS = "FAILED";
return sd2xml.sd2XML(sd) ;
The error occurs on the sched = new StdSchedulerFactory().getScheduler() line.......
If I remove the embedded Quartz from JBOSS the code works fine. I need to coerce JBOSS into resolving the conflict during runtime, so the OSGi code will work within the JBOSS container.
I have tried classloader isolation, EAR isolation, have played with load order or precedence during bootstrap to resolve classes to avoid the error...no success thus far.
Ideas?
Anyone else had this issue?
Thanks!
mtr
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/649771#649771]
Start a new discussion in Beginner's Corner at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 11 months
[jBPM] - Re: saving state after workitem
by Chris Melas
Chris Melas [https://community.jboss.org/people/melc] created the discussion
"Re: saving state after workitem"
To view the discussion, visit: https://community.jboss.org/message/649187#649187
--------------------------------------------------------------
Hello,
So for the following case,
start->workItem1->script1->workItem2->script2->end
a) Yes by reaching script2 the workitem1 is completed and its entry is deleted from the workiteminfo table. It also means that workitem2 has executed and by failing at script2 you can only examine the NodeInstanceLog table to figure out what has happened and maybe take some action. However i think the process instance at that stage will not resume since there will be no associated workitem persisted to execute/complete.
b) If workitem1 completes then it is deleted from the workiteminfo. But generally if you pickup a persisted work item (other than a work item associated with a human task....because a human task has an entry in the task table as well and needs a bit more care i.e. whether the task has completed or not etc) from the database you can either re execute it or complete it. These are achieved by quering the database table workiteminfo retrieving the object associated with the work item you want and calling either
YourWorkItemHandler yourWorkItemHandler = new YourWorkItemHandler();
yourWorkItemHandler.executeWorkItem(workItemFromDB, ksession.getWorkItemManager());
+to re execute the work item+
+or complete it+
ksession.getWorkItemManager().completeWorkItem(workItemFromDB, workItemFromDB.getParameters()/*or some other params etc*/);
The following bootstrap code can be used for non human task work items that have not completed (i.e. system crashed while running) and choosing to re execute them, as well as human task work items that have completed and the system crashed right after the human task completion but before entering the next wait point.
private void bootstrapForWorkItems() {
EntityManagerFactory emf = null;
EntityManager tempEntityManager = null;
List results = null;
try {
emf = (EntityManagerFactory) ksession.getEnvironment().get(EnvironmentName.ENTITY_MANAGER_FACTORY);
tempEntityManager = emf.createEntityManager();
results = tempEntityManager.createNativeQuery("SELECT w.* FROM WorkItemInfo w inner join Task t on t.workItemId=w.workItemId where t.status='Completed' union SELECT w.* FROM WorkItemInfo w where name <> 'Human Task'", WorkItemInfo.class).getResultList();
} finally {
if (tempEntityManager != null) {
tempEntityManager.close();
}
}
if (results != null) {
for (Object resultObject : results) {
WorkItemInfo workItemInfo = (WorkItemInfo) resultObject;
WorkItem workItem = workItemInfo.getWorkItem(ksession.getEnvironment());
if (workItem.getName().equals("YourWorkItem1")) {
YourWorkItem1WorkItemHandler yourWorkItem1WorkItemHandler = new YourWorkItem1WorkItemHandler(ksession);
yourWorkItem1WorkItemHandler.executeWorkItem(workItem, ksession.getWorkItemManager());
}
if (workItem.getName().equals("YourWorkItem2")) {
YourWorkItem2WorkItemHandler yourWorkItem1WorkItemHandler = new YourWorkItem2WorkItemHandler(ksession);
YourWorkItem2WorkItemHandler.executeWorkItem(workItem, ksession.getWorkItemManager());
} else if (workItem.getName().equals("Human Task")) {
/*i'm not sure about the workItem.getParameters() here, might be getting the params of the previous human task....might need a little fixing*/
ksession.getWorkItemManager().completeWorkItem(workItem.getId(), workItem.getParameters());
//or
//call correct workitemhandler for this task and re execute
}
}//for - results
}//if - results
}//method
Of course in some cases you may choose to act differently i.e.instead of re executing a work item, complete it because you checked your business logic (i.e. checked your system's database) and realised that data has been commited or web service has been called but the jbpm engine system crashed right before erasing the workitem etc.
c) By quickly looking at your code and log i see that workitem1 executed then script1, followed by workitem2 and script2 .... so i think it went fine. I'm not sure i get the problem.
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/649187#649187]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 11 months
[jBPM] - Re: Using jbpm-human-task-war.war instead of DemoTaskService.class
by jemmerling
jemmerling [https://community.jboss.org/people/jemmerling] created the discussion
"Re: Using jbpm-human-task-war.war instead of DemoTaskService.class"
To view the discussion, visit: https://community.jboss.org/message/649519#649519
--------------------------------------------------------------
Although I haven't tried it, I think the simple answer is that you would kill the Demo Task Server. This is the reason:
Looking at the code for the WAR, I can see that it launches an instance of MinaTaskServer. If you look at the code for MinaTaskServer, I believe you will see that it is hard-coded to listen at port 9123. To put this in perspective, I believe this can be considered an example of "by convention" behavior as I believe this port number can be overridden however it doesn't require you to specify it, it will just listen at port 9123 "by convention".
So this seems to all be good, however, I don't think the WAR is a good deployment solution because it creates its own thread which is not managed by the Servlet Container - this could make life unpleasant when wanting to stop and start if using the Admin Console, etc.
Hope this helps!
--JE
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/649519#649519]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 11 months
[jBPM] - Store variables in DB?
by nt2005
nt2005 [https://community.jboss.org/people/nt2005] created the discussion
"Store variables in DB?"
To view the discussion, visit: https://community.jboss.org/message/649727#649727
--------------------------------------------------------------
Hey Guys,
The 'problem' I have is a bit difficultly to describe, but I will give my best:
I use jBPM 5.2 in a Web-Application at an JBoss 6 AS with a PostgreSQL (just for info).
I start a process in an Seam bean like this:
public void startProcess() {
EntityManagerFactory emf = entityManager.getEntityManagerFactory();
TransactionManagerService tms = new TransactionManagerService();
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
env.set(EnvironmentName.TRANSACTION_MANAGER, tms.getTransactionManager());
Properties properties = new Properties();
properties.put("drools.processInstanceManagerFactory","org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");
properties.put("drools.processSignalManagerFactory","org.jbpm.persistence.processinstance.JPASignalManagerFactory");
KnowledgeSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(properties);
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase(processid);
StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, config, env);
JPAWorkingMemoryDbLogger logger = new JPAWorkingMemoryDbLogger(ksession);
ksession.getWorkItemManager().registerWorkItemHandler(LoadDataWorkItem.NAME, new LoadDataWorkItem());
ksession.getWorkItemManager().registerWorkItemHandler(TextOutputWorkItem.NAME, new TextOutputWorkItem());
ksession.getWorkItemManager().registerWorkItemHandler(ImageOutputWorkItem.NAME, new ImageOutputWorkItem());
String id = "blackdata";
Map<String, Object> params = new HashMap<String, Object>();
params.put("id", id);
process = ksession.startProcess("de.toni.new", params);
logger.dispose();
}
My jBPM-Process only contains my own WorkItems. The process works great and all.
In my process I have some process variables like:
<property id="image" itemSubjectRef="_imageItem"/>
<property id="text" itemSubjectRef="_textItem"/>
That I read and edit in my WorkItems:
String text = (String) workItem.getParameter("text");
Map<String, Object> results = new HashMap<String, Object>();
results.put("text", text);
manager.completeWorkItem(workItem.getId(), results);
The problem is, that these variables are in the process and not in the database. I thought, the persistence and serializable of all would save these in my db.
So my question to you:
How can I get these variables out of the process in a db?
I hope you understand what I mean, if not, just ask. :)
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/649727#649727]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 11 months
[Beginner's Corner] - Migrating wars from tomcat to jboss AS 7
by Heinz JRookie
Heinz JRookie [https://community.jboss.org/people/Jrookie_2402] created the discussion
"Migrating wars from tomcat to jboss AS 7"
To view the discussion, visit: https://community.jboss.org/message/649630#649630
--------------------------------------------------------------
Hi all,
yes, I am a newbie to jboss. I have worked quite a while using tomcat and developped spring and struts2 applications. Now I started to learn more about hibernate and changed to jboss as ver 7.
I really thought I could just copy my old apps from tomcat webapps directory to jboss as standalone/deployments directory and everything would run fine. How could I be so optimistic!! :-))
I downloaded jboss-as-helloworld examples and they are running fine, so I think in principle everything is ok with my installation. It seems jboss cannot find the starting classes within the wars, but why and what can I do???
Take a look at my jboss log out, somewhere after deploying successfully my helloworld examples:
12:30:49,734 INFO [org.jboss.as.server.controller] (Controller Boot Thread) Deployed "jboss-as-helloworld-gwt.war"
12:30:49,735 INFO [org.jboss.as.server.controller] (Controller Boot Thread) Deployed "jboss-as-helloworld.war"
12:30:49,746 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) Starting deployment of "example3.war"
12:30:49,747 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) Starting deployment of "fuzei.war"
12:30:49,861 INFO [org.jboss.as.jpa] (MSC service thread 1-7) added javax.persistence.api dependency to example3.war
12:30:49,868 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC00001: Failed to start service jboss.deployment.unit."example3.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."example3.war".INSTALL: Failed to process phase INSTALL of deployment "example3.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [:1.7.0]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [:1.7.0]
at java.lang.Thread.run(Unknown Source) [:1.7.0]
Caused by: java.lang.RuntimeException: Failed to load class de.akdabas.jli.j2ee.tags.IterationTag
at org.jboss.as.ee.component.deployers.EEClassConfigurationProcessor$1.compute(EEClassConfigurationProcessor.java:141)
at org.jboss.as.ee.component.deployers.EEClassConfigurationProcessor$1.compute(EEClassConfigurationProcessor.java:122)
at org.jboss.as.ee.component.LazyValue.get(LazyValue.java:40)
at org.jboss.as.ee.component.EEApplicationDescription.getClassConfiguration(EEApplicationDescription.java:183)
at org.jboss.as.ee.component.ComponentDescription.createConfiguration(ComponentDescription.java:153)
at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:70)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115)
... 5 more
Caused by: java.lang.ClassNotFoundException: de.akdabas.jli.j2ee.tags.IterationTag from [Module "deployment.example3.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:361)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:333)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:310)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:103)
at java.lang.Class.forName0(Native Method) [:1.7.0]
at java.lang.Class.forName(Unknown Source) [:1.7.0]
at org.jboss.as.ee.component.deployers.EEClassConfigurationProcessor$1.compute(EEClassConfigurationProcessor.java:139)
... 11 more
wanna see the contents of my war??
E:\Entwicklung\jboss\jboss-as-web-7.0.2.Final\standalone\deployments>jar tf example3.war
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/classes/
WEB-INF/classes/de/
WEB-INF/classes/de/akdabas/
WEB-INF/classes/de/akdabas/jli/
WEB-INF/classes/de/akdabas/jli/j2ee/
WEB-INF/classes/de/akdabas/jli/j2ee/servlets/
WEB-INF/classes/tags/
WEB-INF/tlds/
FormattedDate.jsp
HandleError.jsp
Iterate.jsp
ProduceError.jsp
Secure.jsp
SimpleDate.jsp
WEB-INF/classes/DatenbankServlet.class
WEB-INF/classes/HelloWorld.class
WEB-INF/classes/HelloWorld3.class
WEB-INF/classes/ImageServlet.class
WEB-INF/classes/Weiterleiten.class
WEB-INF/classes/de/akdabas/jli/j2ee/servlets/DatenbankServlet.class
WEB-INF/classes/tags/FilterSecureTag.class
WEB-INF/classes/tags/FormattedDateTag.class
WEB-INF/classes/tags/IterationTag.class
WEB-INF/classes/tags/SimpleDateTag.class
WEB-INF/tlds/jli.tld
WEB-INF/web.xml
background.jsp
beanInput.jsp
beanOutput.jsp
callee.jsp
caller.jsp
carpeDiem.jsp
counter1.jsp
counter2.jsp
dayOfWeek.jsp
forward.jsp
includeDirektive.jsp
includeTag.jsp
index.jsp
isSunday.jsp
numberGuess.jsp
numberGuess_2.jsp
numberGuess_debug.jsp
readHeaders.jsp
readParam.jsp
readParams.jsp
readParams_debug.jsp
simple.jsp
xml.jsp
I can see that there is a difference in the path to the class IterationTag, but why does it work on tomcat and not in jboss. I thought I was independant from the server, if I build a war file.
Any ideas??
Little bit confused.
JRookie
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/649630#649630]
Start a new discussion in Beginner's Corner at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 11 months
[Beginner's Corner] - Cannot access JBoss 7.0.2 Web Interfaces (TCP port 8080, 9990) on Linux
by Michael Peoples
Michael Peoples [https://community.jboss.org/people/mp4783] created the discussion
"Cannot access JBoss 7.0.2 Web Interfaces (TCP port 8080, 9990) on Linux"
To view the discussion, visit: https://community.jboss.org/message/649697#649697
--------------------------------------------------------------
I have just completed a fresh installation of JBoss 7.0.2 on a Linux Centos 5 server. I start the server at the command line (problem occurs in both standalone and domain modes) and JBoss starts without errors.
When I attempt, from my local Windows workstation, to access the Welcome screen at TCP port 8080 or the management console at port 9990, the connection fails.
I have confirmed that the processes are listening at those ports (netstat -anop | grep 8080 or netstat -anop | grep 9990).
I have confirmed that the Linux firewall (iptables) is set to allow access to these ports. I have confirmed that I can access other applications (e.g., Apache, Webmin) at their respective ports.
On the localhost, I can telnet to port 8080 and it connects. I have also tried to telnet from another host on the same subnet to eliminate the possibility of an upstream firewall blocking the connection (there are none to my knowledge). This fails.
Are there additional configuration changes necessary to allow external access to these interfaces? I have searched through the documentation, but there isn't even a mention of a firewalls or network access restrictions.
Any help would be very much appreciated.
Thanks.
Following are the initial messages shown when JBoss is started in standalone mode:
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /opt/jboss
JAVA: /usr/java/latest/bin/java
JAVA_OPTS: -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true
=========================================================================
10:56:42,354 INFO [org.jboss.modules] JBoss Modules version 1.0.2.GA
10:56:42,881 INFO [org.jboss.msc] JBoss MSC version 1.0.1.GA
10:56:43,010 INFO [org.jboss.as] JBoss AS 7.0.2.Final "Arc" starting
10:56:44,918 WARN [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.
10:56:45,188 INFO [org.jboss.as] creating http management service using network interface (management) port (9990)
10:56:45,192 WARN [org.jboss.as] No security realm defined for http management service, all access will be unrestricted.
10:56:45,213 INFO [org.jboss.as.logging] Removing bootstrap log handlers
10:56:45,272 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class org.h2.Driver (version 1.2)
10:56:45,305 INFO [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.
10:56:45,532 INFO [org.jboss.as.naming] (Controller Boot Thread) JBAS011800: Activating Naming Subsystem
10:56:45,567 INFO [org.jboss.as.naming] (MSC service thread 1-2) JBAS011802: Starting Naming Service
10:56:45,582 INFO [org.jboss.as.osgi] (Controller Boot Thread) JBAS011910: Activating OSGi Subsystem
10:56:45,637 INFO [org.jboss.remoting] (MSC service thread 1-4) JBoss Remoting version 3.2.0.Beta2
10:56:45,638 INFO [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem
10:56:45,661 INFO [org.xnio] (MSC service thread 1-4) XNIO Version 3.0.0.Beta3
10:56:45,703 INFO [org.xnio.nio] (MSC service thread 1-4) XNIO NIO Implementation Version 3.0.0.Beta3
10:56:46,204 INFO [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-4) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.6.0_30/jre/lib/i386/server:/usr/java/jdk1.6.0_30/jre/lib/i386:/usr/java/jdk1.6.0_30/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
10:56:46,293 INFO [org.jboss.as.remoting] (MSC service thread 1-3) Listening on /127.0.0.1:9999
10:56:46,295 INFO [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
10:56:46,555 INFO [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-1) Starting remote JMX connector
10:56:46,601 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-2) Starting Coyote HTTP/1.1 on http--127.0.0.1-8080
10:56:46,954 INFO [org.jboss.as.connector] (MSC service thread 1-2) Starting JCA Subsystem (JBoss IronJacamar 1.0.3.Final)
10:56:47,080 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) Bound data source [java:jboss/datasources/ExampleDS]
10:56:47,849 INFO [org.jboss.as.deployment] (MSC service thread 1-4) Started FileSystemDeploymentService for directory /opt/jboss/standalone/deployments
10:56:47,924 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.2.Final "Arc" started in 6045ms - Started 93 of 148 services (55 services are passive or on-demand)
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/649697#649697]
Start a new discussion in Beginner's Corner at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 11 months
[jBPM] - java.io.EOFException while upgrading to jBPM 5.2
by Melih Cetin
Melih Cetin [https://community.jboss.org/people/mscetin] created the discussion
"java.io.EOFException while upgrading to jBPM 5.2"
To view the discussion, visit: https://community.jboss.org/message/648165#648165
--------------------------------------------------------------
We are in the process of upgrading to jBPM 5.2 (from 5.1). As I could not find any explicit notice about the upgrade process in 5.2 documentation, I assumed version 5.2 is backwards compatible with version 5.1.
Apperantly, there are some incompatibilities. We got java.io.EOFException error while unmarshalling the existing jBPM 5.1 process timers (see the stack dump below).
Caused by: java.io.EOFException
at java.io.DataInputStream.readShort(DataInputStream.java:315)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2769)
at java.io.ObjectInputStream.readShort(ObjectInputStream.java:946)
at org.jbpm.marshalling.impl.ProcessMarshallerImpl.readProcessTimers(ProcessMarshallerImpl.java:204)
at org.drools.marshalling.impl.InputMarshaller.readSession(InputMarshaller.java:310)
at org.drools.marshalling.impl.InputMarshaller.readSession(InputMarshaller.java:196)
at org.drools.marshalling.impl.DefaultMarshaller.unmarshall(DefaultMarshaller.java:93)
at org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:91)
... 67 more
When I compare 5.1 and 5.2 versions of org.jbpm.marshalling.impl.ProcessMarshallerImpl class, among other changes I see that implementation of readProcessTimers and writeProcessTimers are different. Is there any script or utility available to upgrade existing 5.1 timers (and/or any other process instance data) to 5.2 format?
P.S. IMHO, persisting session or process instance data in binary format has to be re-evaluated as it creates lots of difficulties while investigating operational issues. If it was done for flexibility then a human readable format (e.g. json or xml) would be a better choice.
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/648165#648165]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 11 months