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