Accessing EnvironmentProperty entries from an EJB

Does anyone know how to access environment entries from within an EJB? One of the examples in the ejb/corba devguide contains the following:
// Add any environment properties that
// the bean requires
EnvironmentProperties {
prop1 = "value1";
prop2 = "value two";
Yet there are no examples or instructions on how to access them anywhere in the document, nor in any of the other Java documents, that I've found.
I've tried the following from within my ejb:
Context Initial = new InitialContext();
String prop1 = (String)initial.lookup("prop1");
This does not work. Neither does a string of the form "java:comp/env/prop1".
Anybody know how to access these properties?
Cheers,
ax
null

In answer to my own question, use the SessionContext getEnvironment() method.
ax
null

Similar Messages

  • Accessing env-entry from out side bean

    Hi,
              I have my env-entry element declared in ejb-jar.xml like this
              <env-entry>
              <env-entry-name>ConfigFile</env-entry-name>
              <env-entry-type>java.lang.String</env-entry-type>
              <env-entry-value>centaur</env-entry-value>
              </env-entry>
              and if I access that value from the EJB(MDB) of that ejb-jar.xml, it is giving the right value. But when I am trying to retrieve the same from a java class, that is throwing exception "javax.naming.NameNotFoundException: Unable to resolve 'ConfigFile' Resolved ; remaining name 'ConfigFile'"
              I think this is because env-entry has access to only EJB or MDB to maintain security?
              or can env-entry elemenets cab be accessed outside the EJB and some thing I am doing wrong here?
              can some one help me here?

    The java:comp/env namespace is local to the J2EE component (ie the EJB).
              You could certainly have a business method that returned the value and call the business method from a java class.
              Or your EJB could lookup the env-entry in JNDI and store it in another data structure.
              -- Rob
              WLS Blog http://dev2dev.bea.com/blog/rwoollen/

  • Accessing Application Scope from an EJB

    I'm not sure of the best way of doing this:
    The set up:
    We have a rather large J2EE application that is composed of only servlets and JSPs at the moment (When the application began development EJB was in its infancy and not feasible for the development of the app). Some of the new deployments of the app involve distributed webserver over 4 JVMs and 2 machines. When a user connects the servers load balancing decides which particular JVM they should be connected to. We perform large data caching into the servlet application scope to avoid having to access the database every time a change is made by a user to certain tables in our database. The data caches are stored in hashtables in the servlet application scope.We seem to have no way to determine what other JVMs are running or which JVM a user is currently connected to.
    The problem:
    Apparently the application scope is for a particular JVM. This means that when a user makes a change to a data cache the change doesn't effect users in the other 3 JVMs of the application, only the users who, due to load balancing, happened to be connected to the same JVM as the one where the change was made.
    Our possible solution:
    We were thinking that we could set up a queue (such as MQSeries from IBM) and any time a change is made to one of these data caches put a message on the stack saying that the particular table had been updated. Then a MDB would be listening asynchronously and digest the message from the Queue and recache the tables from the database.
    So here are my questions:
    1. Would this work? Would putting a MDB in the EJB Container give each JVM the MDB in the first place, or would this mean it would pick one of the JVMs to deploy the MDB on and still not fix our problem.
    2. If this does work, how do I access the hashtables stored in the Servlet Application scope from the MDB. I can't seem to find any method available to the MDB (or any EJBs for that matter) that can access the servlets Application scope.
    3. Is this the best way to do this? Or is there a better way to share data between seperate JVMs that I don't have a URL to (It's all ambiguous and handled by the server as to which JVM actually gets the connection.)
    Just in case this is needed:
    We are running IBM WebSphere 5 Application Server and the database could be anything from DB2 to Oracle.
    Thanks in advance for any possible help.

    You wont get any api for directly accessing Servlet application objects from any ejb. I dont think MDB either solves your problem directly. Indirectly you can place a request to some servlet (should be there for each JVM and web application ) and update your application scope variable. I would suggest you to cache the data in database if the size of cache is large. otherwise any open caching tools may help you.

  • Is it Necessary to lock the table while accessing the entries from table

    Hi Gurus,
    While optimization of the Program i came through one type of coding is in  inside the Loop of The internal table  which is processing BDC call transcation through updating the Custom table.
    Before processing the BDC, the Custom table has been locked and read the entries from same custom  table ,if the process fails then it waits for another 20 seconds and retrying the same for another time .I could not able to understand the Logic behind this.if it is not the Correct way then i can straight away remove this Part which is very well improve the perfromance of the Object.
    For Your Better Understanding i have attached the Snippet of the Code .Please find the Code and advice me the same .
    +LOOP AT i_stk_req INTO wa_stk_req.+
    +**  Lock is set to '0',meaning that no lock exist.+
        ++v_lock = 0.    "FALSE.++
    ++*   Preparing variable key for locking.++
        ++CLEAR v_key.++
        ++v_key = sy-mandt.++
        ++v_key+3(3) = wa_stk_req-lgnum.++
        ++v_key+6(4) = wa_stk_req-werks.++
        ++v_key+10(18) = wa_stk_req-matnr.++
        ++v_key+28(10) = wa_stk_req-charg.++
    ++*   Try to lock the row for max of 100 times.++
        ++DO 10 TIMES.++
    ++*     this perform sends sy-subrc EQ 1. in case of foreign lock.++
          +PERFORM enqueue_tab IN PROGRAM saplsvix USING 'ZSDT_STK_REQ'  v_key c_e c_e.+
          +IF sy-subrc EQ 0.          "If Enqueue is successful.+
    +**      set lock as TRUE+
            ++v_lock = 1.  "TRUE++
    ++*       selecting the latest entry for the table(Entry might have changed-refer to++
            +SELECT SINGLE *+
                    ++FROM zsdt_stk_req++
                    ++INTO wa_stk_req++
                   ++WHERE lgnum = wa_stk_req-lgnum++
                     ++AND werks = wa_stk_req-werks++
                     ++AND matnr = wa_stk_req-matnr++
                     ++AND charg = wa_stk_req-charg.++
            ++IF sy-subrc NE 0.        "Checking if select statement was successful++
    ++*         Unlock the table row.++
              ++PERFORM enqueue_tab IN PROGRAM saplsvix USING c_table v_key c_e c_d.++
              ++v_lock = 0.            "If unsuccessful.Then we set lock as FALSE.++
              ++EXIT.++
            ++ENDIF.++
            ++EXIT.++
    ++*     If unsuccessful in locking then wait for 1 sec.++
          +ELSE.+
           +WAIT UP TO 20 SECONDS.+
          +ENDIF.+
    +** exit from DO. ENDDO.+
        ++ENDDO.++
    ++*   v_lock will be FALSE if all attempts for lock was unsuccessful or++
    ++*   if there is a problem in select single after lock.++
        ++IF v_lock = 0.++
          ++NEW-PAGE.++
          ++CLEAR v_display.++
          ++CONCATENATE text-004 text-012 wa_stk_req-matnr text-011 wa_stk_req-werks++
                      ++text-019 wa_stk_req-lgnum text-020 wa_stk_req-charg INTO v_display SEPARATED BY space.++
          ++WRITE :/ v_display.++
        ++ENDIF.++
    ++*   Only to process if lock is successful.++
        ++CHECK v_lock NE 0.++
    ++*   If UPDATE IS FALSE that means that no updates need to be done.++
    ++*   So we set v_update as FALSE in its initial state.++
        ++v_update = 0.++
    ++* Begin of Insert Optima App - 053++
      ++SELECT   lgnum++
               ++lqnum++
               ++matnr++
               ++werks++
               ++charg++
               ++lgtyp++
               ++meins++
               ++verme++
               ++lgort++
               ++qplos++
               ++bestq++
          ++FROM lqua++
          ++INTO TABLE i_lqua1++
         ++WHERE lgnum EQ wa_lqua-lgnum++
           ++AND matnr EQ wa_lqua-matnr++
           ++AND werks EQ wa_lqua-werks++
           ++AND charg EQ wa_lqua-charg++
           ++AND bestq EQ wa_lqua-bestq++
           ++AND lgort EQ wa_lqua-lgort++
           ++AND verme GE 0.++
    ++* End of Insert Optima App - 053++
    ++*   IF a requirement still exists.++
        ++IF wa_stk_req-verme > 0.++
          ++LOOP AT i_lqua INTO wa_lqua WHERE bestq  = 'Q'++
                                      ++AND   qplos  NE 0++
                                      ++AND   lgnum  =  wa_stk_req-lgnum++
                                      ++AND   werks  =  wa_stk_req-werks++
                                      ++AND   matnr  =  wa_stk_req-matnr++
                                      ++AND   charg  =  wa_stk_req-charg.++
            ++CLEAR v_target.++
            ++CHECK wa_stk_req-lgtyp = wa_lqua-lgtyp OR wa_stk_req-lgtyp IS INITIAL.++
    ++*       checking if still some stock needs to be transported.++
            ++IF wa_stk_req-verme < 0.++
              ++EXIT.++
            ++ENDIF.++
    ++*       we need to send the entire lot if the stock belongs to quality inspection++
            ++IF wa_stk_req-verme >= wa_lqua-verme.++
              ++IF wa_stk_req-lgort IS INITIAL.++
    ++*           fetch the Storage location value from the two custom tables.++
                ++PERFORM f_fetch_lgort.++
              ++ELSE.++
                ++v_lgort = wa_stk_req-lgort.++
              ++ENDIF.++
    ++*         checking if v_lgort is not initial.++
              ++CHECK NOT v_lgort IS INITIAL.++
    ++*         Calling QAC2++
              ++PERFORM f_qac2.++
    ++*         Checking if Post Good was successful.++
              +IF NOT wa_qamb-mblnr IS INITIAL.+
               +REFRESH i_lqua1.+
                +SELECT   lgnum+
                         +lqnum+
                         +matnr+
                         +werks+
                         +charg+
                         +lgtyp+
                         +meins+
                         +verme+
                         +lgort+
                         +qplos+
                         +bestq+
                    +FROM lqua+
                    +INTO TABLE i_lqua1+
                   +WHERE lgnum EQ wa_lqua-lgnum+
                     +AND matnr EQ wa_lqua-matnr+
                     +AND werks EQ wa_lqua-werks+
                     +AND charg EQ wa_lqua-charg+
                     +AND bestq EQ wa_lqua-bestq+
                     +AND lgort EQ wa_lqua-lgort+
                     +AND verme GE 0.+
                +SORT i_lqua1 BY lgtyp.+
                +CLEAR: wa_lqua1,+
                       +v_position.+
                +READ TABLE i_lqua1 INTO wa_lqua1 WITH KEY lgtyp = wa_lqua-lgtyp.+
                +IF sy-subrc EQ 0.+
                  +v_position = sy-tabix.+
                +ENDIF.+
                +SELECT SINGLE lgnum+
                               +ubnum+
                          +FROM lubu+
                          +INTO wa_lubu+
                          +WHERE lgnum = wa_lqua-lgnum+
                            +AND mblnr = wa_qamb-mblnr.+
                +CLEAR i_bdcdata.+
                +REFRESH i_bdcdata.+
                +REFRESH i_messtab.+
                +CLEAR wa_bdcdata.+
                +wa_bdcdata-program  = 'SAPML03T' .+
                +wa_bdcdata-dynpro   = '0141' .+
                +wa_bdcdata-dynbegin = 'X' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'BDC_OKCODE' .+
                +wa_bdcdata-fval = '/00' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'LUBU-UBNUM'.+
                +wa_bdcdata-fval = wa_lubu-ubnum.+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'LUBU-LGNUM'.+
                +wa_bdcdata-fval = wa_lqua-lgnum.+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'RL03T-DUNKL'.+
                +wa_bdcdata-fval = 'H'.+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata.+
                +wa_bdcdata-program  = 'SAPML03T' .+
                +wa_bdcdata-dynpro   = '0143' .+
                +wa_bdcdata-dynbegin = 'X' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CONCATENATE 'RL03T-SELKZ('+
                            +v_position+
                            +')'+
                      +INTO  v_str.+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = v_str.+
                +wa_bdcdata-fval = 'X'.+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'BDC_OKCODE' .+
                +wa_bdcdata-fval = 'BU' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata.+
                +wa_bdcdata-program  = 'SAPML03T' .+
                +wa_bdcdata-dynpro   = '0142' .+
                +wa_bdcdata-dynbegin = 'X' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
                +CLEAR wa_bdcdata .+
                +wa_bdcdata-fnam = 'BDC_OKCODE' .+
                +wa_bdcdata-fval = 'BU' .+
                +APPEND wa_bdcdata TO i_bdcdata .+
    +*......changes as per ticket 44206+
    ++*            CLEAR wa_bdcdata .++
    ++*            wa_bdcdata-fnam = 'LQUAU-KZUAP(01)'.++
    ++*            wa_bdcdata-fval = 'X'.++
    ++*            APPEND wa_bdcdata TO i_bdcdata .++
    +*......end of changes as per ticket 44206+
                +CALL TRANSACTION 'LT05' USING i_bdcdata+
                                        +OPTIONS FROM wa_ctu_params+
                                        +MESSAGES INTO i_messtab.+
    Regards,
    Raja

    hi , please check the link below
    [http://help.sap.com/saphelp_nw70/helpdata/en/41/7af4c5a79e11d1950f0000e82de14a/content.htm|http://help.sap.com/saphelp_nw70/helpdata/en/41/7af4c5a79e11d1950f0000e82de14a/content.htm]

  • Get an error when accessing the entry from the Backing Map directly

    We are using some sample code from Oracle to access Objects associated via KeyAssociation directly from the Backing Map.
    Occasionally we get the error posted below. Can someone shed light on what this error means ?
    I'm doing a Get on the Backing Map directly.
    Thanks,
    J
    An entry was inserted into the backing map for the partitioned cache "Customerl" that is not owned by this member; the entry will be removed.
    ReadWriteBackingMap$5{ReadWriteBackingMap inserted: key=Binary(length=75, value=0x---binary key data removed ----), value=Binary(length=691, value=0x---binary value data removed---)), synthetic}
         at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.DistributedCache$Storage.onBackingMapEvent(DistributedCache.CDB:152)
         at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.DistributedCache$Storage$PrimaryListener.entryInserted(DistributedCache.CDB:1)
         at com.tangosol.util.MapEvent.dispatch(MapEvent.java:191)
         at com.tangosol.util.MapEvent.dispatch(MapEvent.java:164)
         at com.tangosol.util.MapListenerSupport.fireEvent(MapListenerSupport.java:556)
         at com.tangosol.net.cache.ReadWriteBackingMap$InternalMapListener.dispatch(ReadWriteBackingMap.java:2064)
         at com.tangosol.net.cache.ReadWriteBackingMap$InternalMapListener.entryInserted(ReadWriteBackingMap.java:1903)
         at com.tangosol.util.MapEvent.dispatch(MapEvent.java:191)
         at com.tangosol.util.MapEvent.dispatch(MapEvent.java:164)
         at com.tangosol.util.MapListenerSupport.fireEvent(MapListenerSupport.java:556)
         at com.tangosol.net.cache.OldCache.dispatchEvent(OldCache.java:1718)
         at com.tangosol.net.cache.OldCache$Entry.onAdd(OldCache.java:1786)
         at com.tangosol.util.SafeHashMap.put(SafeHashMap.java:244)
         at com.tangosol.net.cache.OldCache.put(OldCache.java:253)
         at com.tangosol.net.cache.OldCache.put(OldCache.java:221)
         at com.tangosol.net.cache.ReadWriteBackingMap.get(ReadWriteBackingMap.java:721)
         at

    Here is the sample we adapted. We have adapted the code below to our specific Cache. I have highlighted the line that throws the exception, this exception doesnt occur all the time, saw it about 10 times yesterday and 2 times today.
    import com.tangosol.net.BackingMapManagerContext;
    import com.tangosol.net.CacheFactory;
    import com.tangosol.net.CacheService;
    import com.tangosol.net.DefaultConfigurableCacheFactory;
    import com.tangosol.net.NamedCache;
    import com.tangosol.util.Binary;
    import com.tangosol.util.ClassHelper;
    import com.tangosol.util.InvocableMap;
    import com.tangosol.util.processor.AbstractProcessor;
    import java.io.Serializable;
    import java.util.Map;
    * dimitri
    public class Main extends AbstractProcessor
    public static class Foo implements Serializable
    String m_sFoo;
    public String getFoo()
    return m_sFoo;
    public void setFoo(String sFoo)
    m_sFoo = sFoo;
    public String toString()
    return "Foo[foo=" + m_sFoo + "]";
    public static class Bar implements Serializable
    String m_sBar;
    public String getBar()
    return m_sBar;
    public void setBar(String sBar)
    m_sBar = sBar;
    public String toString()
    return "Bar[bar=" + m_sBar + "]";
    public Object process(InvocableMap.Entry entry)
    try
    // We are invoked on foo - update it.
    Foo foo = (Foo) entry.getValue();
    foo.setFoo(foo.getFoo() + " updated");
    entry.setValue(foo);
    // Now update Bar
    Object oStorage = ClassHelper.invoke(entry, "getStorage", null);
    CacheService service = (CacheService) ClassHelper.invoke(oStorage, "getService", null);
    DefaultConfigurableCacheFactory.Manager bmm =
    (DefaultConfigurableCacheFactory.Manager) service.getBackingMapManager();
    BackingMapManagerContext ctx = bmm.getContext();
    Map mapBack = bmm.getBackingMap("bar");
    // Assume that the key is still the same - "test"
    Binary binKey = (Binary) ctx.getKeyToInternalConverter().convert(entry.getKey());
    Binary binValue = (Binary) mapBack.get(binKey);
    // convert value from internal and update
    Bar bar = (Bar) ctx.getValueFromInternalConverter().convert(binValue);
    bar.setBar(bar.getBar() + " updated");
    // update backing map
    binValue = (Binary) ctx.getValueToInternalConverter().convert(bar);
    mapBack.put(binKey, binValue);
    catch (Throwable oops)
    throw ensureRuntimeException(oops);
    return null;
    public static void main(String[] asArg)
    try
    NamedCache cacheFoo = CacheFactory.getCache("foo");
    NamedCache cacheBar = CacheFactory.getCache("bar");
    Foo foo = new Foo();
    foo.setFoo("initial foo");
    cacheFoo.put("test", foo);
    Bar bar = new Bar();
    bar.setBar("initial bar");
    cacheBar.put("test", bar);
    System.out.println(cacheFoo.get("test"));
    System.out.println(cacheBar.get("test"));
    cacheFoo.invoke("test", new Main());
    System.out.println(cacheFoo.get("test"));
    System.out.println(cacheBar.get("test"));
    catch (Throwable oops)
    err(oops);
    finally
    CacheFactory.shutdown();
    }

  • Accessing env-entry value from a java class

    Hi,
    I have my env-entry element declared in ejb-jar.xml like this
    <env-entry>
    <env-entry-name>ConfigFile</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>centaur</env-entry-value>
    </env-entry>
    and if I access that value from the EJB of that ejb-jar.xml, it is giving the right value. But when I am trying to retrieve the same from a java class, that is throwing exception "javax.naming.NameNotFoundException: Unable to resolve 'ConfigFile' Resolved ; remaining name 'ConfigFile'"
    I think this is because env-entry has access to only EJB to maintain security?
    or can env-entry elemenets cab be accessed outside the EJB and some thing I am doing wrong here?
    can some one help me here?

    Hey Frank,
    The JCo, DI API and DB are all on PL 18. I have found that the error only occurs for one business partner, and that business partner had a service contract added to it the day before the error started to occur. Also the business partner in question is the only business partner with a service contract which would explain why it is the only one experiencing these problems. It could be a coincidence but I will let you know what the outcome is.
    Carla

  • Accessing env-entry value from outside a bean

    Hi,
    I have my env-entry element declared in ejb-jar.xml like this
    <env-entry>
    <env-entry-name>ConfigFile</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>centaur</env-entry-value>
    </env-entry>
    and if I access that value from the EJB of that ejb-jar.xml, it is giving the right value. But when I am trying to retrieve the same from a java class, that is throwing exception "javax.naming.NameNotFoundException: Unable to resolve 'ConfigFile' Resolved ; remaining name 'ConfigFile'"
    I think this is because env-entry has access to only EJB to maintain security?
    or can env-entry elemenets cab be accessed outside the EJB and some thing I am doing wrong here?
    can some one help me here?

    The java:comp/env namespace is local to the J2EE component (ie the EJB).
              You could certainly have a business method that returned the value and call the business method from a java class.
              Or your EJB could lookup the env-entry in JNDI and store it in another data structure.
              -- Rob
              WLS Blog http://dev2dev.bea.com/blog/rwoollen/

  • Accessing war classes from ejb-jar

    Hi,
    I've a.ear with b.war and c.jar. c.jar contains ejbs.
    I've some classes in b.war which i need to access from the ejbs.
    How may I achieve it? what do i need to configure in the app server or the ejb deployment descriptor?
    tx in adv
    Kejal

    are you absolute sure that the needed jar / class is
    in the classpath?Yes, there is no question about that. Because I can run the same app (unjarred version) with a command such as
    java MyApp
    without specifying classpath explicitly. And I also double checked that the postgresql.jar is listed in the CLASSPATH of my Windows box.
    Is the Class.forName the line where the ClassNotFound
    Exception is thrown?Yes, I caught the exception exactly at that line.
    I use the same for cloudscape�
    Object driver =
    Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance
    ();and it works fine!Probably your app is not a jarred one, or is it?
    By the way, I have written JDBC codes hundreds of times, each time without any trouble. This is my first time I happened to run a JDBC app as an executable jar. And it failed. So I guess there must be other ways to load the class in this case.

  • Ejb remotly accessed from different ejb without parent tag

    Hi,
    is there any way, how to access EJB A deployed in a.aer from another EJB B deployed in b.ear? a.ear and b.ear are deployed at the same IAS 9.0.4.2 and neither of these EAR's is parent EAR ( don't want to use parent tag)?
    Thank you very much for any advice.
    Eugen

    Hi,
    is there any way, how to access EJB A deployed in a.aer from another EJB B deployed in b.ear? a.ear and b.ear are deployed at the same IAS 9.0.4.2 and neither of these EAR's is parent EAR ( don't want to use parent tag)?
    Thank you very much for any advice.
    Eugen

  • Help, how to check anonymous entry from access logfile.

    Can someone tell me how to check anonymous entry from logfile?
    From which field I can tell it's an anonymous entry?
    Thanks!
    Marvin

    In the Directory's access log you will see a RESULT entry like the following, where the dn="" indicates an anonymous BIND
    [01/Mar/2007:14:24:59 -0500] conn=7 op=0 msgId=1 - RESULT err=0 tag=97 nentries=0 etime=0.127000 dn=""
    If an actual user logged in the RESULT line would include the user's DN, like below
    [01/Mar/2007:14:24:59 -0500] conn=2019877 op=0 msgId=1 - RESULT err=0 tag=97 nentries=0 etime=0.127000 dn="uid=myuserid,ou=people,dc=test,dc=com"
    If you are deloyed on a Unix/Linux system you can count all the anonymouse BINDS using the following
    grep -c "tag=97 .*dn=\"\"" access

  • Accessing Tangosol from an EJB

    Hi,
         I have an EJB that when my EJB executes the following method for the first time, it starts up an instance of Tangosol:
         NamedCache cache = CacheFactory.getCache(cacheName);
         I don't want an instance of tangosol to just automatically start up one time on the first call to a Tangosol method given above. This is because I have custom parameters I'd want to use when I start up Tangosol, and I want to have control over when I start and stop Tangosol.
         How would I be able to get the EJB to automatically start an instance of Tangosol with command line params of cache config and tangosol override locations specified, along with a modified classpath?
         If this can't be done, how can I just get my EJB to not instantiate Tangosol, thus implying that I manually start up n instances before my EJB call.
         Thanks in advance,
         - N

    Thx Dimitry. Those provide me with 3 great options to start up Tangosol Coherence from Weblogic or my EJB.
         Two issues:
         1. This is how I would start my instance of Tangosol Coherence from my EJB or Weblogic. I'm testing this in my EJB now but it's not working. Please advice. Note that I'd pass the system properties for my two xml configs but I removed these here for sake of simplicity. I do this from ejbCreate() method. No new thread creation here.
         DefaultCacheServer dcs = new DefaultCacheServer();
         String[] args = new String[5];
         args[0] = "-server";
         args[1] = "-Xms512m";
         args[2] = "-Xmx512m";
         args[3] = "com.tangosol.net.DefaultCacheServer";
         args[4] = "5";
         dcs.main(args);
         dcs.start();
         2. Is there any way I can avoid having to start up Tangosol Coherence from Weblogic or EJB? For example, if I already have my two instances running on machine A, I don't want the EJB or weblogic to start up another Tangosol Coherence node. Is this possible? I've noticed that when I call CacheFactory.getCluster() or CacheFactory.getCache() that even if I have other instances of Tangosol running on machine A that were started from the command line aren't being recognized and an instance is automatically started from my EJB when I didn't ask it to. Why does this occur? Once the "automatically created" instance of Tangosol from my EJB is created, my other two instances I started separately from the cmd line recognize this EJB created tangosol instance. I need to get around this so that my EJB does not bring up a Tangosol node, but instead checks to see if a node exists and if so, just proceed as normal, otherwise it should either create a new node or throw an error.
         Thx,
         - N
         > Hi,
         >
         > You can configure Coherence from a
         > ServletContextListener, like Cameron suggested.
         > Alternatively, if you use WebLogic, you can use
         > Application LIfecycle Events - see <a
         > href="http://edocs.bea.com/wls/docs90/programming/life
         > cycle.html">Programming Application Lifecycle
         > Events</a> (WebSphere has a similar functionality -
         > 'WebSphere Startup Beans). Yet another alternative -
         > you can use a Stateless Session Bean with maximum and
         > initial pool size = 1 and configure Coherence during
         > it's initialization.
         >
         > Regards,
         > Dimitri
         Message was edited by:
         noah

  • Can I modify the value of an enviroment entry for an EJB without having to re-deploy.

    I wish to modify the value of an envrioment entry for an EJB. The entry already exists and has been created using
    <env-entry>
    <env-entry-name>myFlag</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>true</env-entry-value>
    </env-entry>
    I can access the value using code similar to the following:-
    InitialContext initialContext = new InitialContext();
    String value = (String) initialContext.lookup("myFlag");
    However if I try the following:-
    InitialContext initialContext = new InitialContext();
    initialContext.rebind("myFlag", "false");
    I get an OperationNotSupportedException thrown.
    Do I need to use LDAP directly (rather than through JNDI) to modify this value or is there another / better way? If I do need to use LDAP directly what would the code look like ?

    Hi,
    As per J2EE specification:
    Naming environment entries allow customization of a component during deployment or assembly without the need to access or change the component?s source code. The container implements the naming environment, and provides it to the component instance through a JNDI naming context.
    The Deployer can modify values of environment entries that have been previously set by the Application Component Provider and/or Application Assembler.
    Generally only those variables/properties are set in environment entries which are likely to be different on various Application server configurations/installations, so it is not required/advisable to change these entries programmatically. Any way iAS-6.0/6.5 doesn't support changing environment entries programmatically, it binds all the JNDI names during Server startup after reading it from the registry.
    For your purpose you can use a boolean variable in your code to set your flag, and may be put it into session.
    Please feel free to ask further questions.
    Sanjeev,
    Developer Support, Sun ONE Application Server-India.

  • Calling from an EJB into a JSF Backing Bean

    Hello all,
    I'm looking for some help in making calls from an EJB into a Backing Bean (the converse is fairly straightforward). My basic question is: what is regarded as the best way to do this?
    However, for anybody who's interested, I'll describe what I've been trying...
    Here's my situation (I'm working with OC4J 10.1.3.2). I have a simple application-scoped backing bean:
       public class BackingBean implements SimpleInterface, Serializable {
           private String greeting = "Hello, World";
           private SessionEJBRemote blBeanRemote = null;
           public BackingBean() {
               // get hold of EJB
               // [ ... code to obtain EJB's remote interface snipped ... ]
               // set the callback with the EJB       
               try {
                   blBeanRemote.setCallback(this);
               } catch (Exception ex) {
                   ex.printStackTrace();
           // methods to manipulate the greeting string
           public String getGreeting() {
               return greeting;
           public void setGreeting(String greeting) {
               this.greeting = greeting;
       }SimpleInterface, which my Backing Bean implements is, well, a simple interface:
       public interface SimpleInterface {
           public void setGreeting(String greeting);
       }And my EJB is also pretty straightforward:
       @Stateful(name="SessionEJB")
       public class SessionEJBBean implements SessionEJBRemote, SessionEJBLocal {
           private SimpleInterface callback = null;
           public void setCallback(SimpleInterface callback) {
               this.callback = callback;
               callback.setGreeting("Goodbye, World");
       }Now, by using SimpleInterface, my intention was to ensure a one-way dependency: i.e. the JSF-level code would depend on the EJB-level code, but not vice versa.
    However, my experimentation has shown that when I make the call to blBeanRemote.setCallback, the parameter appears to be passed by value rather than by reference. This means firstly that, at runtime, by EJB needs to have access to my backing bean class and secondly, that the call to callback.setGreeting has no effect.
    Can anybody suggest how to work around this? Is it possible to pass the backing bean by reference? Is there a better way to achieve this callback? I appreciate that these questions might be more general Java/AppServer queries rather than JSF-specific ones - but hopefully this is something that all you JSF experts have encountered before.
    (Incidentally, I realise that what I'm doing in this example is pointless - what I'm building towards is using the ICEFaces framework to have the EJBs prod a backing bean which will in turn cause a user's browser to rerender.)
    Many thanks - any help very much appreciated!
    Alistair.

    Hi Raymond - yes, you've pretty much got that spot on: an event occurs (say receipt of a JMS message - which is spontaneous, as far as the users are concerned). As a result of that event, the client's view (in their browser) needs to be re-rendered.
    ICEFaces uses the AJAX technique to allow server-pushes, and rather than refreshing the whole page it uses "Direct-to-DOM" rendering to maninpulate the page components. If you've not come across it, and you're interested, then there are some pretty interesting demos here: http://www.icefaces.org/main/demos/ - the "chat" feature of the Auction Monitor demo (if you open it up in two browsers) is the nearest to the effect I'm looking for.
    The Auction Monitor demo uses a number of session-scoped beans, each implementing the ICEFaces "Renderable" interface, and each of which registers itself with an application-scoped bean. The application-scoped bean can thus iterate through each of the session-scoped beans and cause the corresponding browser to refresh.
    Unfortunately, in the Auction Monitor demo, the entry point is always from a browser - albeit the result is then mirrored across all connected browsers. I haven't found any examples of this processing being driven by an external event, hence my experimentation in this area!

  • How do I access session data through an EJB?

    Hi
    How do I access session data through an EJB?
    I am currantly developing a Web service (using ejb's, JBoss.net and Apache Axis). A client making a call to this Web service, is expecting a bussiness-object in return. My problem is that this bussiness-object i stored in a users session data. How do I retrieve this bussiness-object from the users session.
    I have read that this does not work with httpsessions, is this true? If this is true, is it possible to store the bussiness object in a JavaBean e.g:
    <jsp:useBean id="userContextWebImpl" scope="session" class="com.ac.march.client.UserContextWebImpl">
    <%
    String key = "test";
    String value = "This is the value";
    userContextWebImpl.setValue( key, value1 );
    %>
    </jsp:useBean>
    and then retrieve this information through the EJB? Or is it possible to do this by using Statfull JavaBeans? Or can this be done through a nother solution?
    Please help!

    I have created a JavaBean with scope="application" to store some data. The data is stored when a user prefomes a spesific task.
    A different person then makes a call to a Web-Service on the server. The Web-Service then asks an EJB to retrieve the data stored in the JavaBean (servlet cotext). In other words: How do I retrieve this data from the EJB?
    I have tried with this code, but with no luck.
    (ApplicationContextWebImpl is the JavaBean)
    public static String getBookingResult( String key )
         String myResult = null;
         String myKey = key;
         ApplicationContextWebImpl applicationContextWebImpl = null;
         try
              applicationContextWebImpl = new ApplicationContextWebImpl();
              myResult = (String)applicationContextWebImpl.getValue( key );
         catch ( java.rmi.RemoteException e )
         return myResult;
    }

  • How can I look up DataSource from one EJB to the other EJB?

    Image that, I have 3 databases:
    DB1
    DB2
    DB3,
    And then, 03 DataSources is deployed in DS EJB, named DataSource1, DataSource2, DataSource3.
    In the other App EJB, I have Connection Management function, as follows:
    public Connection getConnection(databaseKey) {
    if (databaseKey.equals("DB1")){
    connection = remote.lookup("DataSource1");
    }else if (databaseKey.equals("DB2")){
    connection = remote.lookup("DataSource2");
    }else if (databaseKey.equals("DB3")){
    connection = remote.lookup("DataSource3");
    return connection;
    How can I access DataSource 1,2,3 from the other EJB? How to config EJB server for that?
    Thanks in advance!
    Now, I have the other App EJB. Some class will require one of the above DataSource from DS EJB through function getConnection(databaseKey){}

    I strongle suggest you to use a ServiceLocator for this . It will be very easy to identify.Go to the sun home page and look for a servicelocator pattern.You can even directly use that code for you.

Maybe you are looking for

  • How to give delay in switch on digital output lines

    Hello All, I am working on PCI-6514 Digital IO card, I am writing a sequence to my application using DAQmax for  Digital input and output lines I want to switch on one output line0 and after a delay 5sec switch on line1 output and after a delay of 3s

  • How do I stop syncing automatically across devices?

    It seems Apple has decided I want to share everything on my iPhone with every other iDevice on my account.  Safari bookmarks, texts, phone calls, contacts, play lists, etc. automatically.  I don't!  I've rooted through setting to the seventeen differ

  • Tcode for data transfert

    Hello all, Does somebody can tell me how to know or to search wich tcode we must put in the field TCODE for the transaction SXDB ? For example, I want to upload vendor into SAP and in my text file, I put FK01 in TCODE in level BLF00 but SAP told me t

  • Header and item level approval using N level BADI

    Hi Experts, I beleive we can use either header level or item level approval workflow (WS14000133 and WS14500015) using N Approval-BADI. Please advise what information approval will be able to see if we will be using WS14000133 (Header level approval)

  • Tether ipod touch to imac for video

    I'd like to use my iPodTouch for the video camera for Skype calls on my iMac - so I can show people what's around, what's outside, better display to them documents, etc. Any thoughts? Other options? Many thanks! Rodger Rodger Mattlage Lincoln, MA