Bug 806208

Summary: drools-camel depends on cxf 2.4.1 and needs to downgrade to 2.2.12-patch-02)
Product: [JBoss] JBoss Enterprise BRMS Platform 5 Reporter: Ryan Zhang <rzhang>
Component: BRE (Expert, Fusion)Assignee: Julian Coleman <jcoleman>
Status: VERIFIED --- QA Contact:
Severity: high Docs Contact:
Priority: unspecified    
Version: BRMS 5.3.0.GA   
Target Milestone: ---   
Target Release: BRMS 5.3.0.GA   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 839231    

Description Ryan Zhang 2012-03-23 08:05:59 UTC
Description of problem:
drools-camel depends on cxf 2.4.1
This issue is to find out the possiblity to downgrade to cxf product version 2.2.12-patch-02. Noticed that cxf version in EAP 5.1.2 is 2.2.12-patch-02.

Since BRMS 5.3 needs to include drools-camel(See Bug 797068), this issue is to look for the possiblity to downgrade the cxf version in drools.



Version-Release number of selected component (if applicable):
BRMS 5.3.0 ER5

How reproducible:


Steps to Reproduce:
1.
2.
3.
  
Actual results:


Expected results:


Additional info:

Comment 1 Geoffrey De Smet 2012-03-29 15:05:28 UTC
I checked some things:

guvnor 5.3.x depends on cxf 2.4.1+
drools-camel 5.3.x depends on cxf 2.4.1+ and camel-cxf 2.4.0+
camel-cxf 2.4.0 depends on cxf 2.2.9+.

Before 5.3.x, drools-camel and guvnor used a different cxf version.
drools-camel 5.2.x used cxf 2.2.9+
guvnor 5.2.x used cxf 2.3.1+ (and did not work with cxf 2.2.9 IIRC)


Long story short: Before 5.3 it was a complex, broken mess.
guvnor 5.2 required at least 2.3.1 to run properly without bugs, so I don't think we can downgrade below that.
guvnor 5.3 and drools-camel 5.3 could only be persuaded to work on the same version by upgrading the cxf version to 2.4.1.

I suggest to follow the standard practice of using the highest version (so cxf 2.4.1) at runtime. Is that possible?

Comment 2 Geoffrey De Smet 2012-03-29 15:51:16 UTC
jdc proposes to overwrite the CXF version in the guvnor and drools-camel-server war.
The drools-camel jar is probably only used as part as the drools-camel-server war (I am not sure why they are 2 separate artifacts in the first place).

Comment 3 Geoffrey De Smet 2012-03-29 16:00:40 UTC
Since the above automatically happens (cxf is included in the wars) - nothing needs to happen on .org side? (correct me if I am wrong)

Comment 4 Prakash Aradhya 2012-04-02 17:53:40 UTC
Ok, please fix this in the WAR that goes both inside the stand alone as well as deployable package that way we dont need to have the user do this.

Comment 5 Geoffrey De Smet 2012-04-04 14:40:20 UTC
drools-camel-server is really just an example war. It does not make sense to productize that as it can never be used as-is: in fact, it contains a test.drl file because it's a hello world war really.

So back to square 1.

- EAP bundled CXF version is impossible to change (would mean recertify)
- Drools-camel requires a higher version (otherwise it has bugs)

How can we solve this?

Comment 6 Geoffrey De Smet 2012-04-04 15:43:29 UTC
Here's the solution Lukas, Prakash and me came up with:

In the product builds, only some zips should contain drools-camel.jar with cxf-2.4.1.jar (and other dependencies that drools-camel needs):
- standalone.zip: No
- deployable.zip:
-- jboss-brms-engine.zip: Yes (drools-camel + the cxf jar that drools-camel needs)
-- jboss-brms-manager.zip: n/a
-- jboss-jbpm-console.zip: n/a
-- jboss-jbpm-engine.zip: Yes (drools-camel + the cxf jar that drools-camel needs)

QA will create a test with a custom war that includes jars from jboss-brms-engine.zip with a test camel REST config and test if it works.

Comment 7 Lukáš Petrovický 2012-04-04 15:48:16 UTC
To sum up the discussion Geoffrey, Prakash and me just had, this is what needs to happen.

Ryan, Julian:
1) There is no need to alter EAP in any way. (Except for converting it to use CXF by default.)
2) Please bundle drools-camel.jar (+ dependencies) inside jboss-jbpm-engine.zip; otherwise users won't be able to launch their processes from Camel. (Which is a PRD requirement.)

Lee, please:
3) Document how to create your own web app using drools-camel.jar. For the specific instructions on how to do it, do please ask me in an e-mail, which I consider a better place to explain this.

I am assigning the issue to Julian, since I think the ball is on the productization side of the court right now.

Comment 8 Julian Coleman 2012-04-11 11:18:51 UTC
Resolved with revision 10873 of:
  brms-p/pom.xml
  brms-p/drools-camel/pom.xml
  brms-p/drools-camel/src/main/assembly/brms-camel.xml

Commit message:
  Move the drools-camel artifact and dependencies so that we can only include
  it in the jboss-brms-engine.zip, but exclude it elsewhere.
  XXX: This means that jboss-brms-engine.zip now contains multiple versions
  of some jars.

Comment 9 Lukáš Petrovický 2012-04-12 06:21:12 UTC
(In reply to comment #8)
>   XXX: This means that jboss-brms-engine.zip now contains multiple versions
>   of some jars.

Which JARs? What causes this?

Comment 10 Geoffrey De Smet 2012-04-12 08:05:26 UTC
>   XXX: This means that jboss-brms-engine.zip now contains multiple versions
>   of some jars.

It should have the highest version of those jars, because:
- Putting multiple versions of the same jar on the same classpath will shadow one of them arbitrair (or at least the classes with the same full name)
- Using a lower version of a jar than required will cause errors at runtime.

Comment 11 Geoffrey De Smet 2012-04-18 11:41:42 UTC
Julian, Lee,

If the customer's war gets deployed to EAP 5.1 with the CXF extension installed,
it should also these jars to run properly on that EAP 5.1 with CXF:
  cxf-rt-bindings-corba-2.4.1.jar
  cxf-rt-management-2.4.1.jar
  cxf-rt-transports-jms-2.4.1.jar
However, for EAP 5.1 without CXF, Tomcat, ... those jars are not needed (and overhead really).

More info in https://bugzilla.redhat.com/show_bug.cgi?id=806232

Comment 12 Ryan Zhang 2012-04-23 07:38:03 UTC
Update status to ON_QA. Please verify them against ER6.

Comment 13 lcarlon 2012-05-02 00:41:14 UTC
Hi Geoffrey,

thanks for the heads. I take it this means it is no longer necessary for customers to create their own web app using drools-camel.jar?

Thanks
Lee

Comment 14 Lukáš Petrovický 2012-05-02 07:35:27 UTC
Server contains 2.2.12-patch-02 and Guvnor contains 2.4.1. This is what we intended, thus VERIFIED.

Comment 15 Geoffrey De Smet 2012-05-02 15:40:38 UTC
@lee: They still need to create their own webapp war, similar to how drools-camel-server-example (formerly known as drools-camel-server) does it. For 5.4, porcelli did build a GUI to generate such a war.

Comment 17 lcarlon 2012-05-02 22:34:56 UTC
Thanks Geoffrey,

I just got your email about this aswell, thanks again.