Hi Are you able to wrap this up in a little example project that we could take a look at?
Cheers Jon On Tue, Nov 27, 2018 at 9:32 PM Kean Erickson <[email protected]> wrote: > Oh duh, I should have seen that coming. Well, now that I'm attempting to > inject TomeeConfiguration in a managed class (annotated @Stateless), I'm > getting this when I attempt to provide that @Resource no matter what > managed class I put it in: > > 27-Nov-2018 12:57:09.469 SEVERE [localhost-startStop-1] > org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal Unable to > deploy collapsed ear in war > StandardEngine[Catalina].StandardHost[localhost].StandardContext[] > org.apache.openejb.OpenEJBException: Can't find resource for class << > *Classpath > for class containing @Resource TomeeConfiguration goes here* >>#config. (No > provider available for resource-ref 'null' of type > '....*TomeeConfiguration*' > for '<< *Arbitrary class annotated with @Stateless goes here * >>'.) > > It looks like the resource that I declared in resources.xml is attempting > to be linked to every managed class when I start TomEE, and something is > failing upon attempting to link the first (arbitrary) one. The arbitrary > managed class that fails has nothing to do with the managed class that > actually contains the @Resource TomeeConfiguration... the injection of > TomeeConfiguration in any managed class is causing this error. I should > note that I don't think the issue is with the @Stateless managed class in > question, which is working properly otherwise. > > I've seen this " No provider available for resource-ref 'null' " error in > some googling, but it generally has to do with a library that is either > missing or needs to be put in an exclusions list in /conf, and not project > code itself. I'm not sure what the "null" here is all about, is it > expecting that I put something in /WEB-INF/web.xml ? > > Also, the Properties meant to be returned.. is that class > java.util.Properties, or is it supposed to be class > org.apache.openejb.jee.jpa.unit.Properties? > > I should also mention, I'm using an exploded WAR deployment.. so I actually > wound up putting resources.xml in WEB-INF. > Thanks again, > -Kean > > On Mon, Nov 26, 2018 at 10:17 PM Romain Manni-Bucau <[email protected] > > > wrote: > > > @Resource(name="config") > > private TomeeConfiguration config; > > > > In a managed class to inject it. If you do a new tomee does nothing. > > > > Le mar. 27 nov. 2018 04:48, Kean Erickson <[email protected]> a > > écrit : > > > > > Thank you, that sounds like it'll work. I'm finding that > getProperties() > > on > > > my configuration file returns null though, I'm wondering if I'm using > the > > > right Properties class (java.util.Properties)? > > > > > > 1. Here's my WEB-INF/resources.xml class (I removed the package name) > > > -------------------------------------------------------- > > > <Resource id="config" class-name=".....TomeeConfiguration"> > > > UserName = postgres > > > </Resource> > > > -------------------------------------------------------- > > > > > > > > > 2. Here's my TomeeConfiguration class (taken from the old > documentation's > > > example): > > > -------------------------------------------------------- > > > package .....; > > > import java.util.Properties; > > > > > > public class TomeeConfiguration { > > > private Properties properties; > > > > > > public Properties getProperties() { > > > return properties; > > > } > > > public void setProperties(final Properties properties) { > > > this.properties = properties; > > > } > > > } > > > -------------------------------------------------------- > > > > > > 3. Then after the container has been prepared, I try the following, but > > > c.getProperties() returns null. > > > -------------------------------------------------------- > > > TomeeConfiguration c = new TomeeConfiguration(); > > > String tomeeUsername = c.getProperties().getProperty("UserName"); > > > -------------------------------------------------------- > > > > > > > > > I'm wondering what I'm missing? > > > Thanks for your time, > > > -Kean > > > > > > > > > On Mon, Nov 26, 2018 at 4:05 AM Jonathan Gallimore < > > > [email protected]> wrote: > > > > > > > Hi > > > > > > > > Yes - you can also define resources at the application level, by > > defining > > > > resources in WEB-INF/resources.xml in your .war file. The syntax is > > > pretty > > > > much the same as tomee.xml, but with <resources> as the top level tag > > as > > > > opposed to <tomee>. The will use the application classpath, > eliminating > > > the > > > > requirement to add your resource class to lib/. > > > > > > > > Let us know how you get on - if you're stuck, I can dig out an > example. > > > > > > > > Kind Regards > > > > > > > > Jon > > > > > > > > On Sun, Nov 25, 2018 at 10:47 PM Romain Manni-Bucau < > > > [email protected] > > > > > > > > > wrote: > > > > > > > > > Guess you want to read > > > > > http://tomee.apache.org/admin/configuration/index.html - doc is > more > > > > > complete and up to date. > > > > > > > > > > Le dim. 25 nov. 2018 23:44, Kean Erickson <[email protected] > > > > a > > > > > écrit : > > > > > > > > > > > The docs mention a way of obtaining properties in code from a > > > resource > > > > in > > > > > > Tomee.xml, under "Custom resources" > > > > > > > > > > > > http://tomee.apache.org/application-resources.html > > > > > > > > > > > > ..such that I could denote a class-name on the resource pointing > > to a > > > > > > configuration class (which would be pretty boilerplate, judging > by > > > the > > > > > > example). But in order to do this, I have to package the config > > class > > > > in > > > > > > TomEE's /lib directory. This introduces some complications in my > > > case, > > > > > for > > > > > > other reasons.. I was wondering if there's any other way to > obtain > > > > these > > > > > > resource properties without having to add anything to TomEE's > > > > classpath. > > > > > > > > > > > > Thanks, > > > > > > -Kean > > > > > > > > > > > > > > > > > > > > >
