Is there any way to instantiate a class which dictates to the vm/container
to inject resources?
On Mon, Oct 13, 2008 at 5:26 PM, Tim Quinn <Timothy.Quinn_at_sun.com> wrote:
> Eve,
>
> It's important to note that the Java EE 5 spec specifies that injection
> take place only in "managed" classes. In the app client, there are only two
> managed classes: the main class (as specified either in the manifest or on
> the appclient command line) and the optional log-in callback class.
>
> Also, the spec also mandates that in the app client main class only static
> elements can be injected.
>
> Here is one general approach that some people find works for them:
>
> 1. Define the injected static fields on the app client's main class:
>
> @EJB
> private static UsersRemote usersRemote;
>
> 2. Write a static accessor method on the app client's main class:
> static UserRemote getUserRemote() {
> return usersRemote;
> }
>
> 3. From anywhere in any of the classes in your app client use
> Main.getUserRemote() when you need to use the EJB.
>
> - Tim
>
>
> Eve Pokua wrote:
>
>
> Hello Ian/Everyone,
>
> Yes,
>
> I have carried out a lot more testing and found that this seems to work
> on the first main class or any class that is run with appclient. Any other
> class
> that I call from the main class, results as NullPointer when I try to
> insert. E.g:
>
> If I try insert data of the same bean from the main class, I get the
> following:
>
> C:\jee\STOCKINFOR2>appclient -client STOCKINFOR2-app-client.jar
> successfully recorded new Department details
>
> However, if I call the class from the main class, then I get the following:
>
> C:\jee\STOCKINFOR2>appclient -client STOCKINFOR2-app-client.jar
> Caught an Exception: can not insert new Department details
> java.lang.NullPointerException
> at
> stockinfor2.NewDepartclient.saveNewDeptdetails(NewDepartclient.java:1
> 22)
> at
> stockinfor2.NewDepartclient.newdepatbutActionPerformed(NewDepartclien
> t.java:113)
>
> So I guess, I have to use just one JFrame client and use containers such as
> panels and so forth, to separate this.
> Or I have to use lookups - Context.
>
> This' now the limitation with server side JEE combined with Client side
> programming.
>
> Thanks for your help.
>
> eve
>
>
> ------------------------------
>
> > Date: Thu, 2 Oct 2008 14:06:29 -0700
> > From: Ian.Evans_at_Sun.COM
> > To: ejb_at_glassfish.dev.java.net
> > CC: persistence_at_glassfish.dev.java.net
> > Subject: Re: injections
> >
> > Eve Pokua wrote:
> > > I followed your advice and created a whole new application. Took a copy
>
> > > of the tutorial client:
> > >
> > > package newapplication;
> > > import javax.ejb.EJB;
> > > import machinedetails2.*;
> > > /**
> > > *
> > > * @author Administrator
> > > */
> > > public class Main {
> > >
> > > @EJB
> > > private static UsersRemote usersRemote;
> > > public Main(String[] args) {
> > > }
> > > /**
> > > * @param args the command line arguments
> > > */
> > > public static void main(String[] args) {
> > > Main client = new Main(args);
> > > client.doTest();
> > > }
> > >
> > > public void doTest() {
> > > try {
> > > usersRemote.createUser("t7","testing7","null","null");
> > > System.out.println("successfull");
> > >
> > > } catch (Exception ex) {
> > > System.err.println("Caught a Exception: not working ");
> > >
> > > ex.printStackTrace();
> > > //System.exit(0);
> > > }
> > > }
> > > }
> > >
> > >
> > >
> > > amended it, tested it on my application and for the first time in
> > > a hundred years it works.
> > >
> > > So, sorry everyone, it was all my mistake trying to mix swing user
> interface
> > > with JEE 5 injection. I also took a look at the dukesbank application
> > > and got
> > > confuse with the BankAdmin.java swing application. Thought I could do
> it.
> >
> > You can use injection in Swing apps provided the application is run via
> > the application client container (appclient in GlassFish). It's possible
> > that problem you had with your original Swing app was your use of an
> > injected resource in your nested class. Or you may not have instantiated
> > the inner class before calling actionPerformed().
> >
> > In general, it's easier to test your server application with a simple
> > console test client, as you did above, before coding the GUI application.
> >
> > > Thanking you all for your patience and excuse me if I offended anyone.
> >
> > No offense at all. Glad you got through one tough patch to getting your
> > app running.
> >
> > -ian
> > --
> > Ian Evans
> > ian dot evans at sun dot com
> > Java EE technical documentation
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: ejb-unsubscribe_at_glassfish.dev.java.net
> > For additional commands, e-mail: ejb-help_at_glassfish.dev.java.net
> >
>
>
> ------------------------------
> Win £3000 to spend on whatever you want at Uni! Click here to WIN!<http://clk.atdmt.com/UKM/go/111354032/direct/01/>
>
>
>
--
Government big enough to supply everything...is big enough to take
everything you have. The course of history shows that as a government grows,
liberty decreases --- Thomas Jefferson
www.CampaignForLiberty.org