Constants at the local EJB interface

Can I include constants at the EJB interface? I want to provide to the client the set of values that a specific method avoid... How can I do it?
Thankx

technically there is no problem in putting constants in the remote interface.
ex. define a string constant like
public static final String var = "hello";
it will work.
But ideally, interfaces should be used to define a "contract" for the client server communication.
A better way to provide the client with a set of contants is that you create a separate file full of constants and then compile both the client and the server with it.
at runtime as well, the class for this constant file should be present in the classpath of both environments.
regards,
Abhishek.

Similar Messages

  • Fail to lookup the local EJB by JNDI in Managed Server

    Hi all,
    I currently in a deep problem, and can't figure out the cause of it. It just annoying me for week.
    In my app, I have binded to the local ejb to JNDI (let's say "ejb/CustomerLocal"), then the client lookup the Local EJB by the following code.
    localIc = new InitialContext();
    home = (EJBLocalHome)localIc.lookup("ejb/CustomerLocal");
    It works well as I do development in the Domain Admin Server. However, when I do the System Integration Test and deploy my app to the managed server, the app fail. It just can't do the Local EJB lookup. Following is the exception.
    javax.naming.NameNotFoundException: Unable to resolve 'ejb/CustomerLocal' Resolved ejb[Root exc
    eption is javax.naming.NameNotFoundException: Unable to resolve 'ejb.CustomerLocal' Resolved ejb
    ]; remaining name CustomerLocal'
    Does anybody know the cause of it and have solution?
    Thanks a lot

    Hi,
    Just now I replicated the same problem what you are facing. I created one managed server. When I deployed my ejb to admin server I did not get any problem. But when I deploy the same into my managed server I got Naming Exception. Because I did n/t specify Context.PROVIDER_URL. A provider URL contains bootstrap server information that the initial context factory can use to obtain an initial context. So when you deploy EJB on another server, you have to get the Naming service from that server. Hence provider URL must pointing to that server. So I included following statements before lookup my ejb in managed server.
    Properties p=new Properties ();
    p.put (Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
    p.put (Context.PROVIDER_URL,"t3://localhost: 7003");
    Context ctx=new InitialContext (p);
    FacadeHome home=(FacadeHome) ctx.lookup ("ejb/CustomerLocal");
    In my case managed server port number is 7003. Now onwards managed server (Port number 7003) will provide ‘Naming Service’, not by admin server (port number 7001), which is default.
    Note: Context.PROVIDER_URL— specifies the URL of the WebLogic Server that provides the name service. The default is t3://localhost: 7001. When you are not specified it will assume that POVIDER_URL is t3://localhost: 7001 this is nothing but your admin server in your case. However, a JNDI client may need to access a name space other than the one identified in its environment. In this case, it is necessary to explicitly set the java.naming.provider.url (provider URL) property used by the InitialContext constructor.
    I hope it helps.
    Regards,
    Kuldeep Singh.

  • FileGeneration/Wlappc not including local ejb interfaces in client jar

    With the following setting in the EJB source:
    @FileGeneration(
              remoteClass = Constants.Bool.TRUE,
              remoteHome = Constants.Bool.TRUE,
              remoteClassName = "ReportService",
              remoteHomeName = "ReportServiceHome",
              localClass = Constants.Bool.TRUE,
              localHome = Constants.Bool.TRUE,
              localClassName = "ReportSvc",
              localHomeName = "ReportSvcHome")
              @JarSettings(ejbClientJar = "dist/ReportFacadeClient.jar")
              @JndiName(remote="service-ReportFacade", local="local-ReportFacade")
              @Session(maxBeansInFreePool = "100",
                        initialBeansInFreePool = "10",
                        transTimeoutSeconds = "0",
                        type = Session.SessionType.STATELESS,
                        defaultTransaction = Constants.TransactionAttribute.SUPPORTS,
                        ejbName = "statelessSession",
                        enableCallByReference = Constants.Bool.TRUE)
    Along with the "<ejb-client-jar>ReportServiceClient.jar</ejb-client-jar>" entry in the ejb-jar.xml
    the ant build script invocation of wlappc successfully creates the "dist/ReportFacadeClient.jar" file as specified which includes the Remote Home and Remote interface, however the local definitions are absent.
    It is confirmed that the wlcompile does create the local implementation and interface files, they are just missing from the client jar.
    Do I need to manually append them to the jar or is there a configuration setting that I am missing to have this done automatically as is is done
    for the remote interface?
    Thanks.

    Hi,
    the local interface and local home is for local client which is within the same application (.ear). So local client needn't any client jar. it can always load the classes (local interface, local home, etc. ) it needs.
    so there isn't needs to put local interface and local home to a client jar.
    the client jar is for client out of the application, and it will be a remote invocation certainly.

  • Servlet + Local EJBS

    Hi,
    I'm about to deploy the Servlet using the Local EJB interfaces. The problem
    I've encountered is that when I try access the local home interface I get
    the ClassCastException. But object returned does indeed implement the local
    home interface. I suppose, there are some repeated classes both in ejb and
    web deployments. Can someone tell me how to make my servlet access the same
    classes as deployed local ejbs?
    Thanks in advance,
    Andrzej

    Ok, that's the reason.
    Thanks.
    You can only access local EJBs within the application. Are you deployingthe
    servlet and ejb together in an ear file?
    -- Rob
    Andrzej Dmoch wrote:
    Hi,
    I'm about to deploy the Servlet using the Local EJB interfaces. The
    problem
    I've encountered is that when I try access the local home interface Iget
    the ClassCastException. But object returned does indeed implement thelocal
    home interface. I suppose, there are some repeated classes both in ejband
    web deployments. Can someone tell me how to make my servlet access thesame
    classes as deployed local ejbs?
    Thanks in advance,
    Andrzej

  • Using Local EJB obect in web container that installed in on the same Web AS

    we can use the local ejb object in the application that runs in same JVM.
    The Web Container and EJB Container run in the same JVM when Web AS installed as Minimum Cluster Installation(one cluster node).
    But, what happened if we install the Web AS as Large Cluster Installation? Can we still use the local ejb objects in the Web Container?
    Best regards,
    Raja
    Message was edited by: Raja Nasrallah

    Hi Raja,
    Yes you can. When you use local EJB objects there's no remote communication and the web container will find them in the EJB container of the local cluster node. For the application providers this is transparent - they shouldn't care about the configuration of the cluster.
    Best regards,
    Vladimir
    PS: Please consider <a href="https://www.sdn.sap.com/sdn/index.sdn?page=crp_help.htm#lostme">rewarding points</a> for helpful answers.

  • Is it possible to get print jobs from other computers to show up locally without having to load the CUPS Web Interface?

    on my Mac Pro (Lion) I have a printer that I've setup to share with the computer devices in my house (ipads, computers, iphones)
    Every once an awhile my partner forgets to check if the printer is on, and prints a document two or three, or TEN TIMES then then forgets about it.  Then when I go to print something on my mac I turn the printer on and all theses pages spit out.
    Is there a way to get the local print queue to pop up on my screen when remote jobs are sent to my shared printer (just like the print queue would if I printed a document locally), that way I know about them, can hold or delete them without having to fire up the local web interface to CUPS?

    m,
    You can submit Feedback to Apple from the Numbers menu. That's the official channel for comments about the app and suggestions for improvement. The Apple officials don't visit these discussions except to maintain the decorum.
    Jerry

  • Why do I use local bean interfaces?

    When can I use a local bean interface?
    Is it when the beans are deployed in the same manufacturers container system or do the beans just have to reside on the same physical machine?

    Yes, you should always write local interfaces when
    both web and ejb container using the same JVM.
    This is incorrect. The EJB Local view (as opposed to the EJB Remote view)
    can only be accessed by :
    1) an EJB within the same ejb-jar
    2) an EJB within a different ejb-jar but packaged within the same .ear
    3) a web component(servlet or jsp) in a .war packaged within the same .ear
    An ejb or web component in a different application(.ear) cannot portably
    access the Local EJB view.
    Kenneth Saks
    J2EE SDK Team
    SUN Microsystems
    You can search out about more on local interface for
    solving data-aliasing problem.

  • Challenge: call local ejb from remote ejb on weblogic 9.2

    Hi ALL,
    How do I call to local ejb from remote ejb object. The jar file is deployed on weblogic server 9.2, if you want get it http://geocities.yahoo.com.br/lindembe/BEAProject.jar and the source code are http://geocities.yahoo.com.br/lindembe/BEAProject.zip. It is a sample app with two ejb that works so good on JBOSS, JOnAS, but BEA Weblogic.....
    The complete problem you watch http://forum.java.sun.com/thread.jspa?threadID=768718&messageID=4387570#4387570
    or
    http://forums.bea.com/bea/message.jspa?messageID=600043148&tstart=0

    Your code in SigemFacadeBean should just do:
    InitialContext ctx = new InitialContext();
    when you lookup the local EJB. (This will work on all app servers. There's no need to put an app-server specific intial context factory in your code.)
    Also, you can remove the jndi-name setting for the local ejb from your weblogic-ejb-jar.xml. jndi-name is only applied to remote ejbs.
    -- Rob
    WLS Blog http://dev2dev.bea.com/blog/rwoollen/

  • How to create a local EJB 3.0 and execute in JDeveloper?

    Hello guys!
    I'm brand new with EJB 3.0.
    I would like to know how can I create a @Local EJB and a client in JDeveloper?
    It's was ease to create a @Remote EJB and the sample java client, how can I do same to @Local EJB?
    I'm using JDeveloper 10.1.3.1.0.3914
    Thanks in advance.

    Creating a @Local EJB is just as easy, just replace the @Remote by @Local, or checkmark local in the EJB wizard.
    You can create a client for a @Local EJB, as local methods aren't available outside the EJB container, that's why they are called local. A test client doesn't run in the ejb container, and therefor cannot access the local ejb methods.
    If you want to test the local methods of an ejb, you should create another ejb which calls the first.

  • Error in Workflow Services API acquireTask when using local EJB protocol

    Hi,
    I have a stateful EJB which calls the workflow services API acquireTask to acquire a task. The task was retrieved using a queryTask API call. However, the acquireTask API fails with an exception at TaskServiceLocalClient.java:1152, as listed below in the log, with no clear message as to why it had failed.
    The stateful EJB calls to workflow API using the local EJB protocol.
    The version of SOA suite running is 10.1.3.1 with Oracle XE 10.2.0.1 as its dehydration store on Windows XP Professional version 2002.
    Just wondering if anyone has encountered this problem or know what might have caused this.
    Exception trace is below:
    /09/2007 09:23:31 oracle.j2ee.rmi.RMIMessages EXCEPTION_ORIGINATES_FROM_THE_REMOTE_SERVER
    WARNING: Exception returned by remote server: {0}
    au.com.unico.server.BPELException
    at oracle.bpel.services.workflow.task.client.TaskServiceLocalClient.acquireTask(TaskServiceLocalClient.java:1152)
    at au.com.unico.server.WorkflowBean.acquireTask(Unknown Source)
    at au.com.unico.server.WorkflowBean.fetchTask(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.SetContextActionInterceptor.invoke(SetContextActionInterceptor.java:44)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
    at com.evermind.server.ejb.StatefulSessionEJBObject.OC4J_invokeMethod(StatefulSessionEJBObject.java:844)
    at Workflow_RemoteProxy_2ooecl0.fetchTask(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.evermind.server.rmi.RmiMethodCall.run(RmiMethodCall.java:53)
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
    at java.lang.Thread.run(Thread.java:595)

    Hi Nicolas,
    It turned out I had the wrong version of "xml.jar" on the classpath. I have swapped the incorrect jar for a correct one and changed my code to use XMLUtil.createDocument(); and now everything runs smoothly.
    Thank you very much for your helpful advice.
    /emil

  • Obtaining a reference to local home interface

    When I do a JNDI look-up for the local home interface, I get back an object whose class is "MyBean_b2yw37_LocalHomeImpl". I expected it to be "MyHome" which is the local home for MyBean.
    Can someone please tell me how to fix this issue?
    Thanks!

    MyHome is an interface. You'll receive a class which implements your interface. The class is generated by the container. It has a funny name so that we can guarantee that it doesn
    collide with other beans.
    -- Rob
    A D wrote:
    When I do a JNDI look-up for the local home interface, I get back an object whose class is "MyBean_b2yw37_LocalHomeImpl". I expected it to be "MyHome" which is the local home for MyBean.
    Can someone please tell me how to fix this issue?
    Thanks!--
    AVAILABLE NOW!: Building J2EE Applications & BEA WebLogic Server
    by Michael Girdley, Rob Woollen, and Sandra Emerson
    http://learnWebLogic.com
    [att1.html]

  • Trying to look up a LOCAL EJB (Weblogic 8.1)

    Hi,
    I'm trying to look up a LOCAL EJB (Weblogic 8.1):
    try
    Context ct = new InitialContext();
    Object o = ct.lookup("*ejbSecurityDataLocalHelper*");
    catch(...)
    I systematically get the following exception:
    Caused by: javax.naming.LinkException: Root exception is javax.naming.NameNotFoundException: While trying to look up /app/ejb/AEX_JRK_security_EJB.jar#SecurityDataHelper/local-home in /app/ejb/ISL_MSD_mktdata_general_EJB.jar#MarketDataGeneralManager.; remaining name '/app/ejb/AEX_JRK_security_EJB/jar#SecurityDataHelper/local-home'; Link Remaining Name: 'java:app/ejb/AEX_JRK_security_EJB.jar#SecurityDataHelper/local-home'
    Where SecurityDataHelper is the Local EJB, who's called from MarketDataGeneralManager EJB.
    I realized that the Weblogic JNDI tree shows a red dot next to the name SecurityDataHelperLocalHome: as the other names are not red, I could guess there was something wrong at deployment... buy deployment logs are OK. When I tryied to test the EJB via the Weblogic console there was a message "The EJB SecurityDataHelper has not been tested successfully. There was a problem determining the JNDI Name of the given bean. "
    My ejb-jar.xml looks like this:
    <session>
    <ejb-name>SecurityDataHelper</ejb-name>
    <local-home>com.MyLocalHome</local-home>
    <local>com.MyLocalObject</local>
    <ejb-class>com.MyBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    and my weblogic-ejb-jar.xml:
    <weblogic-enterprise-bean>
    <ejb-name>SecurityDataHelper</ejb-name>
    <stateless-session-descriptor>
    </stateless-session-descriptor>
    <enable-call-by-reference>True</enable-call-by-reference>
    <local-jndi-name>ejbSecurityDataLocalHelper</local-jndi-name>
    </weblogic-enterprise-bean>
    What I am doing wrong???

    Hi Dan,
    As u have targeted the ConnectionFactory to "soa_server1" which is running on "realHostName:7001" ....Can u please check from the AdminConsole that the JNDI name ""jms/b2b/B2BQueueConnectionFactory" is present in the JNDI Tree?
    AdminConsole---->Servers---soa_server1 (click) ---> in this general configuration page you will see a link "View JNDI Tree" please ckick on that link to see the JNDI tree entries.
    If you dont see any JNDI entry there then it means there is something wrong while setting up the Connection Factory in that case please refer to the Screenshots of Creating and Targeting the Connection Factory: *http://middlewaremagic.com/weblogic/?p=1987*
    Thanks
    Jay SenSharma
    *http://middlewaremagic.com/weblogic (Middleware magic Is Here)*

  • Stub and skeleton for local EJBs

    is there a stub and skeleton for local EJBs ?

    Not in the traditional sense in that there is no marshalling/unmarshalling for EJB local invocations
    since they have pass-by-reference semantics. However, the actual implementation of the
    EJB reference is not exposed to the application, so in practice the Java EE vendor can have
    whatever artifacts it wants under the covers. Like all EJB invocations, the Local EJB client
    holds a special reference object that is distinct from the bean class instance itself.
    --ken                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • How can I get a reference to the Local interface of a EJB 3 session?

    Hi,
    How can I get a reference to the Local interface of a EJB 3 session?
    My session implements both the local and remote interfaces, so in my client, when I look up the remote interface using the following code, I did get a reference
              processor = (IItemProcessorRemote)initialContext.lookup(IItemProcessorRemote.class.getName());but if I also look up the local interface in th eclient using this:
    processorLocal =(IItemProcessor)initialContext.lookup(IItemProcessor.class.getName());I got errors like the following, do you know why? Thanks a lot!
    Exception in thread "main" javax.naming.NameNotFoundException: sessions.IItemProcessor not found
         at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:203)
         at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:175)
         at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:61)
         at com.sun.enterprise.naming.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:116)
         at sun.reflect.GeneratedMethodAccessor114.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:121)
         at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:650)
         at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:193)
         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1705)
         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1565)
         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:947)
         at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:178)
         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:717)
         at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:473)
         at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1270)
         at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:479)

    BTW, findItemByTitle(String title) is a business method in my ItemProcessor session bean.
    public String findItemByTitle(String title) {
              AuctionItem item;
              String result = null;
              try {
                   Query query = entityManager
                             .createNativeQuery("SELECT i from AuctionItem i WHERE i.title LIKE : aTitle");
                   query.setParameter("aTitle", title);
                   item = (AuctionItem) query.getSingleResult();
                   result = item.toString();
              } catch (EntityNotFoundException notFound) {
              } catch (NonUniqueResultException nonUnique) {
              return result;
         }

  • Accessing the local interface of an EJB

    Hello.
    I am using Jdeveloper 11G and it's integrated application server. Using the Jdeveloper wizards, i created a simple stateless session EJB which has both a local and a remote interface (code listed below). I then used the "Create test client" option to create a simple test client.
    The way these classes and interfaces are set up by the wizards, i am using the remote interface. However, i would like to lookup the local interface and use that instead. But i just can't figure out how to lookup the local interface of the EJB. I have tried pretty much every variation i can think of but still no success. Is there anyone out there who can give me a hand? Is there a way to see the lookup name in the integrated WLS server?
    My remote interface looks like this:
    @Remote
    public interface SessionEJB {
    and the remote one:
    @Local
    public interface SessionEJBLocal {
    And my EJB class:
    @Stateless(name = "SessionEJB", mappedName = "NewTestApplication-SessionEJB")
    public class SessionEJBBean implements SessionEJBLocal, SessionEJB {
    My test client does this lookup that works fine:
    public class SessionEJBClient1 {
    public static void main(String [] args) {
    try {
    final Context context = getInitialContext();
    SessionEJB sessionEJB = (SessionEJB)context.lookup("NewTestApplication-SessionEJB#model.SessionEJB");
    }

    Hi,
    Your lookup in your client would look something like
    SessionEJBLocal sessionEJB = (SessionEJBLocal)context.lookup("NewTestApplication-SessionEJB#SessionEJBLocal ");
    The part before the # in the lookup is your mapped name from your session facade, and after the # you have your package, like com.oracle. and ending it with your local interface name.
    Just remember that if your client is not actually running inside the application server container (which with the generated test client it wouldn't be, its a java standalone app with a main method), you will not be able to use the local interface, and you would have to look up remote interface. This can be done in exactly the same way as the above line of code, just replacing the local interface parts with the remote interface's. Hope this helps.
    Drikus
    Edited by: Drikus Britz on Jun 3, 2009 8:46 PM
    Edited by: Drikus Britz on Jun 3, 2009 8:50 PM

Maybe you are looking for