geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Blevins <david.blev...@visi.com>
Subject Re: ejb client
Date Mon, 29 Dec 2008 20:50:42 GMT
I'd backup and go with the suggestion from Shawn Jiang.  You're really  
close.

It's just:

     Properties env = new Properties();
      
env 
.put 
("java 
.naming 
.factory 
.initial","org.apache.openejb.client.RemoteInitialContextFactory");
     env.put("java.naming.provider.url", "ejbd://localhost:4201");
     env.put("java.naming.security.principal", "system");
     env.put("java.naming.security.credentials", "manager");
     InitialContext ctx = new InitialContext(env);

     ShoppingCart shoppingCart = ctx.lookup("ShoppingCartBeanRemote");

Looking at your bean code the JNDI name will likely be  
"ShoppingCartBeanRemote", but as Shawn mentions the geronimo.log file  
will list it exactly.

I would not investigate using annotations in remote clients until you  
can get a simple client like the one above working.  The reason being  
is annotations in clients only work for Java EE App Clients running in  
a Java EE App Client Container.  Java EE Application Clients are  
definitely far more complicated than plain java clients that use the  
code above.

-David


On Dec 29, 2008, at 1:39 AM, axiez wrote:

>
> I am trying to use annotations instead of JNDI. My Bean class code is:
> import java.io.*;
> import java.util.*;
> import javax.ejb.*;
> @Stateful
> @Remote(ShoppingCart.class)
> public class ShoppingCartBean implements ShoppingCart, Serializable {
>    private HashMap<String, Integer> cart = new HashMap<String,  
> Integer>();
>    public void buy(String product, int quantity) {
>        if(cart.containsKey(product)) {
>            int currq = cart.get(product);
>            currq += quantity;
>            cart.put(product, currq);
>        }
>        else {
>            cart.put(product, quantity);
>        }
>    }
>    public HashMap<String, Integer> getCartContents() {
>        return cart;
>    }
>    @Remove
>    public void checkout() {
>        System.out.println("To be implemented");
>    }
> }
> I used the inPlace option of deploy command. It said "Deployed
> default/yourDirectory/1230542660703/jar". From EJB 3.0 spec, it  
> looks like
> we can use annotations and avoid JNDI. My attempt is to use remote  
> client
> with simplest EJB 3.0 code.
>
> Shawn Jiang wrote:
>>
>> you need to use the bean's remote interface name here instead of the
>> bean class name itself.
>>
>> As for "ShoppingCartBean/remote" in the lookup method, you need to
>> confirm it's the JNDI name of your EJB remote interface.(you can get
>> the JNDI name of your EJB by searching  "[startup] Jndi(name=" in the
>> geronimo/var/log/geronimo.log file)
>>
>> 2008/12/29 axiez <lesaient@gmail.com>:
>>>
>>> I added jndi.properties. Modified code is given below:
>>> Properties p = new Properties();
>>> p.load(new FileInputStream("jndi.properties"));
>>> InitialContext ctx = new InitialContext(p);
>>> ShoppingCart cart = (ShoppingCart) ctx.lookup("ShoppingCartBean/ 
>>> remote");
>>> I compiled the java files and am planning to create a jar file  
>>> "a.jar"
>>> and
>>> deploy it. In the lookup method given above, I simply mentioned  
>>> the bean
>>> class name. Nowhere did I mention jar file/module name. Is this  
>>> correct?
>>>
>>> axiez wrote:
>>>>
>>>> I want to run sample code to understand ejb 3.0 basics. I am new  
>>>> to ejb.
>>>> I
>>>> have the following java files: ShoppingCartBean.java,  
>>>> ShoppingCart.java
>>>> and Client.java. The Client.java file has the following code:
>>>> import javax.naming.InitialContext;
>>>> public class Client {
>>>>    public static void main(String[] args) throws Exception {
>>>>        InitialContext ctx = new InitialContext();
>>>>        ShoppingCart cart = (ShoppingCart)
>>>> ctx.lookup("ShoppingCartBean/remote");
>>>>        ...
>>>>    }
>>>>    My plan is to have client on a different JVM than ejb  
>>>> container. I
>>>> wonder how the client can execute bean method without even  
>>>> knowing IP
>>>> address etc of the JVM that has the other code on ejb container.
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/ejb-client-tp21193112s134p21199643.html
>>> Sent from the Apache Geronimo - Users mailing list archive at  
>>> Nabble.com.
>>>
>>>
>>
>>
>>
>> -- 
>> Shawn
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/ejb-client-tp21193112s134p21200805.html
> Sent from the Apache Geronimo - Users mailing list archive at  
> Nabble.com.
>
>


Mime
View raw message