Uploaded image for project: 'TomEE'
  1. TomEE
  2. TOMEE-599

TomEE exposing Remote JNDI names not per

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Auto Closed
    • 1.5.0
    • None
    • Compliance Checks
    • None

    Description

      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"); }

      }

      Attachments

        Activity

          People

            Unassigned Unassigned
            johndament John D. Ament
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: