My issue seems more basic than CMP actually - a straight session bean with
a business method that does a no-op is also failing using a Local and
LocalHome interface throws this exception. I stripped the test right down
to the basics, and also tried it in a sample. Not sure what I'm not seeing
at this point. I'll keep you posted if I find anything.

Jon

On Tue, Dec 4, 2018 at 4:41 PM Jonathan Gallimore <
[email protected]> wrote:

> I'm kinda enjoying the challenge. And yes, I'll definitely be kicking out
> some docs and better examples for this. :)
>
> Jon
>
> On Tue, Dec 4, 2018 at 4:38 PM David Blevins <[email protected]>
> wrote:
>
>> In the bike shed vs nuclear reactor analogy of open source, you're
>> working on a nuclear reactor and therefore not getting much participation.
>> This particular code is super hard and the guy who wrote it was Dain
>> Sundstrom, who went on to create Presto a 300 pedabyte data warehouse
>> Facebook runs on.  This is also the only CMP implementation that runs on
>> JPA.
>>
>> Thank you for working on it.
>>
>> We should document it incredibly, because it *is* a "nuclear reactor" and
>> few people can work on it. I'm aware of the high level design, but this one
>> should point at actual code and say "look here and here for the critical
>> things.  If you have issues, do this and do that."
>>
>>
>> --
>> David Blevins
>> http://twitter.com/dblevins
>> http://www.tomitribe.com
>>
>> > On Dec 4, 2018, at 3:48 AM, Jonathan Gallimore <
>> [email protected]> wrote:
>> >
>> > I hacked together a little JVMTI agent to help debug this, and I think I
>> > have tracked down where the NPE is - looks to be field is null in the
>> > metadata that is handed over to OpenJPA. Looks like I now have enough of
>> > stacktrace to debug it. When I track down my mistake, I'll let you know
>> > (and no doubt kick myself as well :-) )
>> >
>> > Jon
>> >
>> > On Mon, Dec 3, 2018 at 4:55 PM Jonathan Gallimore <
>> > [email protected]> wrote:
>> >
>> >> I have pushed some further work on this, but I'm now stuck. I have
>> tried
>> >> to ensure that this is working ok with CMP beans with a 1-m
>> relationship,
>> >> but I am getting a very weird NPE from here:
>> >>
>> https://github.com/apache/tomee/pull/222/commits/5d3efd692c4ee3c635d76e5e53b0ff583d692be3#diff-59a18d263fb512ee53c08513f51d2172R58
>> >>
>> >> Weirdly, the business method on MovieBusinessBean works ok:
>> >>
>> https://github.com/apache/tomee/pull/222/commits/5d3efd692c4ee3c635d76e5e53b0ff583d692be3#diff-d3d03f1bc557e1eca2bac8afe2a7c86bR56
>> .
>> >> All I can see in terms of the stack trace is an NPE thrown inside the
>> >> proxy, called from line 58 of MoviesServlet. Only started happening
>> when I
>> >> added the addActor method.
>> >>
>> >> I'll kick hacking away on it, but any review of the code, any samples
>> of
>> >> CMP code with relationships working, or general debugging tips are much
>> >> appreciated.
>> >>
>> >> Jon
>> >>
>> >> On Thu, Nov 29, 2018 at 10:23 AM Jonathan Gallimore <
>> >> [email protected]> wrote:
>> >>
>> >>> This is my work in progress so far:
>> >>> https://github.com/apache/tomee/pull/222.
>> >>>
>> >>> I'd like to incorporate some Arquillian tests today, and ensure that
>> this
>> >>> works with things like relationships between entities.
>> >>>
>> >>> The change here is fairly straightforward though; we pick up a
>> >>> persistence unit called "cmp", if one has been defined, and read all
>> the
>> >>> elements on it. If an entity has been defined in one of those mappings
>> >>> files, we add the entity class to a set, and the CMP/JPA processing
>> will
>> >>> simply ignore it. The persistence provider should then use the
>> mapping that
>> >>> has been defined in the mapping file and not generate its own.
>> >>>
>> >>> I'll post further updates here, but feedback is welcome.
>> >>>
>> >>> Jon
>> >>>
>> >>> On Wed, Nov 28, 2018 at 11:50 AM Jonathan Gallimore <
>> >>> [email protected]> wrote:
>> >>>
>> >>>> Hi
>> >>>>
>> >>>> This continues on from the work that Otavio did on this thread:
>> "Creates
>> >>>> an unmarshal that does not filter to JavaEE namespace".
>> >>>>
>> >>>> For those of you who aren't aware, TomEE supports CMP entity beans
>> >>>> (which is quite an old way of doing persistence - it dates back to
>> the EJB
>> >>>> 2.1 era - and possibly earlier, I started using EJB around 2.1), and
>> it
>> >>>> does this by converting them to JPA entities on the fly and creating
>> an ORM
>> >>>> mapping file in XML for the persistence provider to use. It uses a
>> special
>> >>>> persistence unit called "cmp".
>> >>>>
>> >>>> One of the nice things you can do is use
>> >>>> the openejb.descriptors.output=true system property, and you'll get
>> the
>> >>>> persistence.xml and orm.xml file that was generated at deploy time.
>> >>>> Unfortunately, if you try and customize the ORM xml, and provide
>> both the
>> >>>> persistence xml and ORM xml files in your app, using the
>> <mapping-file> tag
>> >>>> in persistence.xml (something like the example below), it doesn't
>> work, and
>> >>>> the auto generated mappings are still used instead.
>> >>>>
>> >>>> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
>> >>>> <persistence xmlns="http://java.sun.com/xml/ns/persistence";
>> >>>> version="2.0">
>> >>>>    <persistence-unit name="cmp" transaction-type="JTA">
>> >>>>        <jta-data-source>jta-ds</jta-data-source>
>> >>>>        <non-jta-data-source>non-jta-ds</non-jta-data-source>
>> >>>>
>> >>>> <mapping-file>META-INF/openejb-cmp-generated-orm.xml</mapping-file>
>> >>>>        <class>...</class>
>> >>>>        ...
>> >>>>        <exclude-unlisted-classes>true</exclude-unlisted-classes>
>> >>>>    </persistence-unit>
>> >>>> </persistence>
>> >>>>
>> >>>> I've reproduced this in a test, and am working on a fix. Doesn't look
>> >>>> like it'll be too hard.
>> https://issues.apache.org/jira/browse/TOMEE-2295
>> >>>> is the JIRA, and I'll post a PR here for review and discussion when
>> I'm
>> >>>> done.
>> >>>>
>> >>>> Cheers
>> >>>>
>> >>>> Jon
>> >>>>
>> >>>
>>
>>

Reply via email to