good catch for the typo, -0 to backport it (really read it as "this flag shouldnt have existed anyway" more than "don't backport it")
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://blog-rmannibucau.rhcloud.com> | Old Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com> 2017-07-07 12:43 GMT+02:00 Jonathan Gallimore <jonathan.gallim...@gmail.com> : > I think we also have a typo in "FailOnUnknownActivationSpec" where an 'n' > is missing. I think we should correct that. > > https://github.com/apache/tomee/blob/master/container/ > openejb-core/src/main/resources/META-INF/org.apache. > openejb/service-jar.xml#L494 > > Jon > > On Fri, Jul 7, 2017 at 11:40 AM, Jonathan Gallimore < > jonathan.gallim...@gmail.com> wrote: > > > I'm thinking something along the lines of: > > > > <Container id="MDB1" ctype="MESSAGE"> > > ResourceAdapter MyResourceAdapter > > ActivationSpecClass My.ActivationSpecImpl > > > > activation.property1 = value1 > > activation.property2 = value2 > > </Container> > > > > <Container id="MDB2" ctype="MESSAGE"> > > ResourceAdapter MyOTHERResourceAdapter > > ActivationSpecClass My.Other.ActivationSpecImpl > > activation.property1 = othervalue1 > > activation.property2 = othervalue2 > > </Container> > > > > So all the MDBs in container MDB1 would get the following on their > > activation spec > > property1 = value1 > > property2 = value2 > > > > And all the MDBs in container MDB2 would get the following on their > > activation spec > > property1 = othervalue1 > > property2 = othervalue2 > > > > > > And then have the potential to override them with system.properties like > > so: > > MDB1.activation.property1 = othervalue1 > > MDB1.activation.property2 = othervalue2 > > MDB2.activation.property1 = othervalue1 > > MDB2.activation.property2 = othervalue2 > > > > Maybe something is needed to call 'MDB1' out as a container as opposed to > > a bean name. In terms of precedence, I'd expect properties on the > container > > to override any `mdb.activation` properties, and any properties specific > to > > a bean to override any container properties - so its Global > > (mdb.activation) -> Container ([containerid].activation) -> Bean > > ([BeanName].activation). > > > > I imagine it would essentially boil down to a new key at the point you > > suggest, and expand on the test cases. > > > > I'm in favour of the backport irrespective of whether we choose to > explore > > my suggestion (or any other suggestion) though. > > > > Cheers > > > > Jon > > > > On Thu, Jul 6, 2017 at 10:09 PM, Romain Manni-Bucau < > rmannibu...@gmail.com > > > wrote: > > > >> 2017-07-06 23:01 GMT+02:00 Jonathan Gallimore <jgallim...@tomitribe.com > >: > >> > >> > I'm +1 for back porting that patch, thanks Otavio. > >> > > >> > One thing I'd be interested in as an extra, is seeing if we can set > >> > activation properties on a per-container basis too. > >> > > >> > >> Mean like adding one new key in > >> https://github.com/apache/tomee/blob/master/container/openej > >> b-core/src/main/java/org/apache/openejb/config/Activati > >> onConfigPropertyOverride.java#L94 > >> using .container.<id>? > >> > >> +1 if ~so (just wanted to avoid a misunderstanding and get a completely > >> new > >> feature/code) > >> > >> > >> > >> Side note on the fail flag: this was a flag added to pass tck and was in > >> "ignore" mode of the MDB (which is fine for this need) but not intended > to > >> be used or reliable for real applications where it would be saner to fix > >> the broken configuration instead of bet on it working ignoring the work > >> some people did configuring it. I'm not against backporting it but think > >> it > >> is important to remind that I think we don't want to promote that flag > >> (shouldn't hit the doc for instance since it is an internal workaround > >> IMHO). > >> > >> > >> > > >> > What do you think? > >> > > >> > Jon > >> > > >> > On Thu, Jul 6, 2017 at 9:44 PM, Otávio Gonçalves de Santana < > >> > osant...@tomitribe.com> wrote: > >> > > >> > > The problem > >> > > > >> > > The configuration for MDB activation properties allow any key/value > >> to be > >> > > specified. At present on the 1.7.x branch, the server will fail to > >> deploy > >> > > the application if the activation property is not present on the > >> > activation > >> > > spec class. > >> > > > >> > > This becomes painful in a scenario where more than one JMS resource > >> > > adapter/MDB container is used, and you wish to configure the > >> activation > >> > > properties of multiple MDBs in one go using the `mdb.activation.` > >> system > >> > > property.. Right now,if an activation property is used that one > >> provider > >> > > uses but other one does, the server will throw an exception. > >> > > > >> > > For example, given these parameters, > >> > > > >> > > - > >> > > > >> > > mdb.activation.ignore=foo > >> > > - > >> > > > >> > > mdb.activation.ignore2=bar > >> > > > >> > > > >> > > if ‘ignore’ and ‘ignore2’ are not present on an MDB’s activation > spec > >> > > class, the following exception will be thrown. > >> > > > >> > > Caused by: org.apache.openejb.OpenEJBException: Error deploying > >> > > 'Listener'. Exception: class org.apache.openejb.OpenEJBException: > >> > Unable > >> > > to create activation spec: No setter found for the activation spec > >> > > properties: [ignore, ignore2]: Unable to create activation spec: No > >> > setter > >> > > found for the activation spec properties: [ignore, ignore2] > >> > > > >> > > at > >> > > org.apache.openejb.assembler.classic.Assembler.startEjbs( > >> > > Assembler.java:1430) > >> > > > >> > > at > >> > > org.apache.openejb.assembler.classic.Assembler. > >> > > createApplication(Assembler.java:796) > >> > > > >> > > ... 19 more > >> > > > >> > > Caused by: org.apache.openejb.OpenEJBException: Unable to create > >> > > activation > >> > > spec: No setter found for the activation spec properties: [ignore, > >> > ignore2] > >> > > > >> > > at > >> > > org.apache.openejb.core.mdb.MdbContainer.createActivationSpec( > >> > > MdbContainer.java:292) > >> > > > >> > > at org.apache.openejb.core.mdb.MdbContainer.deploy( > >> > > MdbContainer.java:159) > >> > > > >> > > at > >> > > org.apache.openejb.assembler.classic.Assembler.startEjbs( > >> > > Assembler.java:1417) > >> > > > >> > > ... 20 more > >> > > > >> > > Caused by: java.lang.IllegalArgumentException: No setter found for > >> the > >> > > activation spec properties: [ignore, ignore2] > >> > > > >> > > at > >> > > org.apache.openejb.core.mdb.MdbContainer.createActivationSpec( > >> > > MdbContainer.java:262) > >> > > > >> > > ... 22 more > >> > > > >> > > > >> > > The solution > >> > > > >> > > The best solution to solve the communication among server is to put > a > >> new > >> > > configuration property in TomEE. When this setting is enabled, > >> overriding > >> > > the FailOnUnknownActivationSpec attribute at > >> > > org.apache.openejb.core.mdb.MdbContainer class., that will be > >> disabled > >> > by > >> > > default to don't break the compatibility, when the setter does not > >> exist > >> > it > >> > > put a log and then keep working. > >> > > > >> > > Basically, my proposal does a backport to 1.7 branch: > >> > > https://github.com/apache/tomee/commit/ > 6522f349d0c31d6ec82e66378e0e55 > >> > > eded08aec0 > >> > > > >> > > Path: > >> > > > >> > > https://patch-diff.githubusercontent.com/raw/apache/tomee/ > >> pull/86.diff > >> > > > >> > > >> > > >> > > >> > -- > >> > Jonathan Gallimore > >> > http://twitter.com/jongallimore > >> > http://www.tomitribe.com > >> > > >> > > > > >