Hi Ivan,

That worked, thank you. Your <ejb-local-ref> was defined in the web.xml, whilst mine was in the geronimo-web.xml using the proper editor.

Why does this make a difference? Is it a bug?

Cheers,

Michael
Sent from my BlackBerry® wireless device

From: Ivan <xhhsld@gmail.com>
Date: Wed, 7 Nov 2012 22:04:05 +0800
To: <user@geronimo.apache.org>
ReplyTo: user@geronimo.apache.org
Subject: Re: Geronimo, Wink and JNDI

Just have a try, the codes below work for me. I packaged the ejb and war in the ear.

TestEJB.jar

package org.apache.geronimo.test;

import javax.ejb.Local;

@Local
public interface TestBeanInterface {

    public void test();
}

package org.apache.geronimo.test;

import javax.ejb.Stateless;

/**
 * Session Bean implementation class TestBean
 */
@Stateless(name = "TestBean")
public class TestBean implements TestBeanInterface {

    /**
     * Default constructor. 
     */
    public TestBean() {
        // TODO Auto-generated constructor stub
    }

    public void test() {

    }

}

TestWeb.war

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <ejb-local-ref>
        <ejb-ref-name>ejb/TestBean</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type> 
        <local>org.apache.geronimo.test.TestBeanInterface</local>
        <ejb-link>TestEJB.jar#TestBean</ejb-link>        
    </ejb-local-ref>
</web-app>

Hope it helps.

2012/11/7 Michael Baylis <maillist@baylishome.me.uk>
Hi Ivan,
            I am afraid it didn't make a difference. 

I've tried:-

Object x = ic.lookup("java:comp/env/ejb/TestEJB");
Object x = ic.lookup("ejb/TestEJB");

with the ejb-ref you provided.

As I am using EJB 3.1 and annotations, I didn't put anything in ejb-jar.xml or openejb-jar.xml.   Does anything need to go in there?

Cheers,

Michael


On 06/11/2012 14:44, Ivan wrote:
If the ejb jar is packaged in the same ear, could you try whether the configuration below works for you :

<ejb-ref>
        <ref-name>ejb/TestEJB</ref-name>
        <ejb-link>bob.ejb#TestEJB</ejb-link>
</ejb-ref>

2012/11/6 Michael Baylis <maillist@baylishome.me.uk>
Hi Folks,
    Help!!!

Whenever I start to use Wink with EJBs I always seem to get totally confused wth JNDI lookups,  please could you resolve this once and for all for me.

I have a restful service that would like to do a call to an EJB.   I have tried many combinations, but the following is what I have pieced together from the docs:-

I am using Geronimo 3.0.0, and as I understand it EJB injection does not work in Wink (in Geronimo or IBM WAS 8.0) as the service class is loaded but the rest servlet, so I have to use a jndi lookup:-

bob.ear has bob.web, the restful service.
bob.ejb is seperate (but I would like it in the ear).

bob.ejb has TestEJB with a @Remote and @Local which results in:-

2012-11-05 22:21:45,603 INFO  [startup] Assembling app: C:\Users\mikebyls\software\eclipse\default\bob.ejb\1.0\jar
2012-11-05 22:21:45,619 INFO  [startup] Jndi(name=TestEJBLocal) --> Ejb(deployment-id=bob.ejb.jar/TestEJB)
2012-11-05 22:21:45,619 INFO  [startup] Jndi(name=global/bob.ejb/TestEJB!bob.ejb.TestEJBLocal) --> Ejb(deployment-id=bob.ejb.jar/TestEJB)
2012-11-05 22:21:45,619 INFO  [startup] Jndi(name=TestEJBRemote) --> Ejb(deployment-id=bob.ejb.jar/TestEJB)
2012-11-05 22:21:45,619 INFO  [startup] Jndi(name=global/bob.ejb/TestEJB!bob.ejb.TestEJBRemote) --> Ejb(deployment-id=bob.ejb.jar/TestEJB)
2012-11-05 22:21:45,619 INFO  [startup] Jndi(name=global/bob.ejb/TestEJB) --> Ejb(deployment-id=bob.ejb.jar/TestEJB)

My bob.web deployment is:-
<web:web-app xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" xmlns:bp="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:client="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0" xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2" xmlns:ejb="http://openejb.apache.org/xml/ns/openejb-jar-2.2" xmlns:jaspi="http://geronimo.apache.org/xml/ns/geronimo-jaspi" xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-2.0" xmlns:name="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pers="http://java.sun.com/xml/ns/persistence" xmlns:pkgen="http://openejb.apache.org/xml/ns/pkgen-2.1" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1">
    <dep:environment>
        <dep:moduleId>
            <dep:groupId>default</dep:groupId>
            <dep:artifactId>bob.web</dep:artifactId>
            <dep:version>1.0</dep:version>
            <dep:type>car</dep:type>
        </dep:moduleId>
        <dep:dependencies>
            <dep:dependency>
                <dep:groupId>default</dep:groupId>
                <dep:artifactId>bob.ejb</dep:artifactId>
                <dep:version>1.0</dep:version>
                <dep:type>jar</dep:type>
            </dep:dependency>
        </dep:dependencies>
    </dep:environment>
    <web:context-root>/bob</web:context-root>
    <name:ejb-ref>
        <name:ref-name>ejb/TestEJB</name:ref-name>
        <name:ejb-link>TestEJBRemote</name:ejb-link>
    </name:ejb-ref>
</web:web-app>


My Test Restful service is:-

@Path("test")
public class Test1 {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String get() throws NamingException {

        InitialContext ic = new InitialContext();

        Object x = ic.lookup("java:comp/env/ejb/TestEJB");

        return "boo";
    }

}


I have tried allsorts of combinations with the name, with the ejb in the same ear,  using local and remote interfaces, etc.   Ive googled, but cant seem to find a combination that willwork.
I have also tried different "<name:ejb-link>TestEJBRemote</name:ejb-link>" names.

Please put me out of my misery.

Would it be possible to give me a solution that would work with the EJB module in the same EAR as the WEB module please.

Regards,

Michael



--
Ivan




--
Ivan