You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Romain Manni-Bucau (JIRA)" <ji...@apache.org> on 2015/04/05 15:02:33 UTC

[jira] [Commented] (OPENEJB-2113) Embeddable EjbContainer - unable to set up environment variables

    [ https://issues.apache.org/jira/browse/OPENEJB-2113?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14396219#comment-14396219 ] 

Romain Manni-Bucau commented on OPENEJB-2113:
---------------------------------------------

Context.xml is a tomee only descriptor not an openejb one and java:comp/env is a web prefix only so not openejb embedded one excepted usin env-entries.properties or ejb-jar.xml.

> Embeddable EjbContainer - unable to set up environment variables
> ----------------------------------------------------------------
>
>                 Key: OPENEJB-2113
>                 URL: https://issues.apache.org/jira/browse/OPENEJB-2113
>             Project: OpenEJB
>          Issue Type: Bug
>          Components: configuration
>    Affects Versions: 4.7.1
>         Environment: Tomee 1.7.1, Java 1.7.0_72 64bit, Windows 7
>            Reporter: Apache Fan
>
> My singleton EJB pulls environment value resources from web.xml and Tomee's context.xml. It works fine when executed in Tomee, but it is not possible to initialize the bean by using Embeddable EJBContext, the references to the resource remain null.
> EJB:
> {noformat}
>     @Resource(name = "serviceendpoint.url")
>     private String serviceEndpointUrl;
>     @Resource(lookup = "java:comp/env/serviceendpoint.url")
>     private String serviceEndpointUrl2;
> {noformat}
> web.xml
> {noformat}
>   <env-entry>
>     <env-entry-name>serviceendpoint.url</env-entry-name>
>     <env-entry-type>java.lang.String</env-entry-type>
>     <env-entry-value>https://blabla.com/rest/</env-entry-value>
>   </env-entry>
> {noformat}
> Tomee context.xml:
> {noformat}
> <Environment name="serviceendpoint.url" type="java.lang.String" value="https://blabla-bla-bla.com/api/" />
> {noformat}
> Use of EJBContext:
> {noformat}
> final Properties p = new Properties();
> p.put("serviceendpoint.url", "https://blahhhhhh.com/rest/");
> final Context context = EJBContainer.createEJBContainer(p).getContext();
> context.bind("java:comp/env/serviceendpoint.url", "https://blahhhhhh.com/rest/");
> MyBean bean = (MyBean) context.lookup("java:global/myApp/myBean");
> {noformat}
> As a result the serviceEndpointUrl and serviceEndpointUrl2 members remain null during the use of EJBContainer. In Tomee container they do fine.
> What could cause this problem?
> Workaround:
> {noformat}
> @PostConstruct
> public void getConnection() {
>   if (serviceEndpointUrl == null) {
>             // support for embedded EJB container for testing:
>             serviceEndpointUrl = System.getProperty("serviceendpoint.url");
>             if (serviceEndpointUrl == null) {
>                 throw new IllegalStateException("unable to determine the value of environment var: serviceendpoint.url");
>             }
>   }
> ....
> }
> {noformat}
>  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)