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.

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