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
> >> >
> >>
> >
> >
>

Reply via email to