Java.util as in https://github.com/apache/tomee/blob/master/container/openejb-core/src/test/java/org/apache/openejb/resource/PropertiesInjectionTest.java
Do you have the resource creation log? If not the file is likely not found, misplaced or not parsed properly. Le mar. 27 nov. 2018 22:35, Jonathan Gallimore <[email protected]> a écrit : > 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > >
