John D. Ament created TOMEE-599:
-----------------------------------

             Summary: TomEE exposing Remote JNDI names not per 
                 Key: TOMEE-599
                 URL: https://issues.apache.org/jira/browse/TOMEE-599
             Project: TomEE
          Issue Type: Bug
          Components: Compliance Checks
    Affects Versions: 1.5.0
            Reporter: John D. Ament


Section 4.4.2.2 of the EJB 3.1 spec states that the following JNDI locations 
should be populated for "other client views," which includes remote.  TomEE is 
instead exposing it as BeanName + Remote.

This was shown with the following test material

@Remote
public interface RemoteDatabaseIntegrator {
        public void runQuery(String query) throws SQLException;
}

@Remote(RemoteDatabaseIntegrator.class)
@Stateless(name="RemoteDatabaseIntegrator")
public class RemoteDatabaseIntegratorImpl implements RemoteDatabaseIntegrator {
        @Resource(name="jdbc/AppDS")
        private DataSource ds;
        private Connection conn;
        @PostConstruct
        public void init() throws SQLException {
                this.conn = ds.getConnection();
        }
        @PreDestroy
        public void cleanup() throws SQLException {
                this.conn.close();
        }
        public void runQuery(String query) throws SQLException {
                this.conn.createStatement().execute(query);
        }
}

@RunWith(Arquillian.class)
@RunAsClient
public class RemoteDatabaseIntegratorTest {
        @Deployment(testable=false)
        public static JavaArchive createTestArchive() {
                return ShrinkWrap.create(JavaArchive.class,"test.jar")
                                
.addClasses(RemoteDatabaseIntegrator.class,RemoteDatabaseIntegratorImpl.class);
        }
        
        @ArquillianResource
        private URL deploymentURL;
        
        private static final String JNDI_LOC = "RemoteDatabaseIntegratorRemote";
        
        @Test
        public void testDbServiceInjectionFailure() throws Exception{
                Properties p = new Properties();
                p.put("java.naming.factory.initial", 
"org.apache.openejb.client.RemoteInitialContextFactory");
                String providerUrl = 
String.format("http://%s:%s/tomee/ejb",deploymentURL.getHost(),deploymentURL.getPort());
                p.put("java.naming.provider.url", providerUrl);
                Context context = new InitialContext(p);
                RemoteDatabaseIntegrator dbIntegrator = 
(RemoteDatabaseIntegrator)context.lookup(JNDI_LOC);
                dbIntegrator.runQuery("select 1");
        }
}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to