Return proxy instances from EJB

Is weblogic able to return proxy instances from EJBs?
<BR>
I am using the session-facade pattern with DTO/Value-Object being passed between
facade and client(s). To handle different "levels of loading", I want to have
one DTO for an entity, but then restrict the available properties by wrapping
in an interface using java.lang.reflect.Proxy.
<BR>
Should this work? It doesn't. For example (from my session bean):<P><PRE>
return new MyDTO();
</PRE>works fine; however, the stubs generated by weblogic.ejbc have trouble unmarshalling
the return if I do:<P><PRE>
return Proxy.newProxyInstance(
MyInterface.class.getClassLoader(),
new Class[] { MyClass.class },
new MyPassThruHandler( new MyDTO() )
</PRE> returning various errors.
<BR>
Is this valid to do from weblogic? If not, I am mystified as to how not.
<BR>
Thanks,<P>
Steve
<BR>
P.S., I am using WL61sp3.

Hi all,
Finally, I solve the problem. That is my misstake, i had a interface declared as private variable in the my concreteClass (inhert from AbstractClass)... now i declare as transient, let the interface variable don't to be serialize.
Now everything fine...:-) thanks for help anyway.
But just wonder why it don't throw any exception ???
Gordon

Similar Messages

  • Returning cloned objects from EJB Local Interfaces

    We'd like to let our WAS 5/J2EE container manage our transactions/unit of work. However, we don't want to have our objects serialized, so we intend to use LocalInterfaces. Additionally, we want to return value objects that support Toplink indirection such that we are not returning the actual cache object but instead a clone.Our question is, how do we return a cloned object that supports indirection from Toplink that we can later do a deepMergeClone on in an explicit update method?

    Additional Information on the first post:
    The pattern we've been testing is as follows:
    1. We set up LocalInterfaces on our EJB's
    2. The EJB Getters are using acquireNonSynchronizedUnitOfWork() to get a NON-JTS transaction to perform a readQuery. This results in a Cloned Bis object being generated. We then release the UOW and return the object.
    3. The Returned Biz object Getters are using Indirection (probably using the released non-synchronized UOW).
    4. The pattern for UPDATE is that we allow the Web Container code (servlet) to change the Cloned Biz Object, they then submit the CLONED and changed object to an EJB update() method where we use getClientSession().getActiveUnitOfWork() to link to the JTS transaction and perform a uow.deepMergeClone(bizObjectClone);
    We are trying to use the pattern for the following reasons:
    1. Isolation of the Cache to upper layers
    2. Transaction Boundry is the EJB Container
    3. We understand that there is a performance overhead with CLoned Biz Objects but this more mirrors the ValueObject Pattern then anything else we've tried.
    BIG Question:
    1. Is this a supported TopLink Pattern?
    2. If its not supported, can it be?
    3. Do you have any other suggested patterns?

  • LDAP connections with multiple proxy instances

    After configuring LDAP connectivity through the Admin application on a machine with multiple proxy instances I end up with:
    number of proxy instances x LDAPConnPool times number of connections to the LDAP server.
    Question: Is it possible to prevent some of the proxy instances from opening LDAP connections?

    Hi
    Increase the IDLE timeout value on the LDAP server. Of course, this just extends the inevitable. Check if there is a way to disable IDLE timeout on LDAP server.
    Regards,
    Nagendra HK

  • Best practise for returning data from EJB's

    I have an EJB that runs a query on a backend database and i want to return the data back to my Java GUI. Ideally i would like to pass a ResultSet back but i don't think they are serialisable so this isn't an option.
    What's considered the best way to pass database results back from EJB's to a front end Java application ?
    Thanks for any ideas you guys have

    If you want type-safety, define a VO (value object) that maps to your result-set, extract the data from the result set into the VO, and return an array of the data. Yes, it's extra work on the "back-end," but that's what the back-end is for. Just make sure your client.jar has the VO in it, as well as the Home and Remote interfaces.

  • Error when returning Vector from EJB Session Bean

    I am testing the EJB functionality within JDeveloper(9.0.3). I simply expanded on the tutorial that is in the documentation (departments and employees). I created a method in the stateless session bean that retrieves a Collection of employees for a department, then converts it to a Vector. When I try to return the Vector from the session bean to a sample client, I get an error indicating that the Object is NOT serializable. I know that Vector IS serializable. Why do I get this error? (The error displays on the client message log, NOT the OC4J message log). I tried dumping the Vector to System.out.println - this works fine, so I l know I'm getting data.
    Here is the stack trace and errors that display:
    com.evermind.server.rmi.OrionRemoteException: Error (de-)serializing object: EmployeeLocal_EntityBeanWrapper4
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneSerialize(java.lang.Object, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:404
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneObject(java.lang.Object, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:377
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneOneObjectInstance(java.lang.Object, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:419
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneArrayList(java.util.ArrayList, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:599
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneObject(java.lang.Object, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:357
         java.util.Collection hrApp_StatelessSessionBeanWrapper2.getEmployeesByDepartment(java.lang.Long)
              hrApp_StatelessSessionBeanWrapper2.java:323
         java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])
              native code
         void com.evermind.server.rmi.RMICallHandler.run(java.lang.Thread)
              RMICallHandler.java:119
         void com.evermind.server.rmi.RMICallHandler.run()
              RMICallHandler.java:48
         void EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()
              PooledExecutor.java:803
         void java.lang.Thread.run()
              Thread.java:484
    at connection to localhost/127.0.0.1 as admin
         void com.evermind.server.rmi.RMIConnection.EXCEPTION_ORIGINATES_FROM_THE_REMOTE_SERVER(java.lang.Throwable)
              RMIConnection.java:1558
         java.lang.Object com.evermind.server.rmi.RMIConnection.invokeMethod(com.evermind.server.rmi.RMIContext, long, long, java.lang.reflect.Method, java.lang.Object[])
              RMIConnection.java:1511
         java.lang.Object com.evermind.server.rmi.RemoteInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
              RemoteInvocationHandler.java:53
         java.lang.Object com.evermind.server.rmi.RecoverableRemoteInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
              RecoverableRemoteInvocationHandler.java:22
         java.lang.Object com.evermind.server.ejb.StatelessSessionRemoteInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
              StatelessSessionRemoteInvocationHandler.java:50
         java.util.Collection __Proxy1.getEmployeesByDepartment(java.lang.Long)
         javax.swing.table.DefaultTableModel hr.hrAppClientFrame.getTableModel()
              hrAppClientFrame.java:150
         void hr.hrAppClientFrame.jbInit()
              hrAppClientFrame.java:122
         void hr.hrAppClientFrame.<init>()
              hrAppClientFrame.java:58
         void hr.hrAppClientFrame.main(java.lang.String[])
              hrAppClientFrame.java:141
         Nested exception is:
    java.io.NotSerializableException: EmployeeLocal_EntityBeanWrapper4
         void java.io.ObjectOutputStream.outputObject(java.lang.Object)
              ObjectOutputStream.java:1148
         void java.io.ObjectOutputStream.writeObject(java.lang.Object)
              ObjectOutputStream.java:366
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneSerialize(java.lang.Object, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:390
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneObject(java.lang.Object, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:377
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneOneObjectInstance(java.lang.Object, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:419
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneArrayList(java.util.ArrayList, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:599
         java.lang.Object com.evermind.server.ejb.EJBUtils.cloneObject(java.lang.Object, com.evermind.server.ejb.AbstractEJBHome)
              EJBUtils.java:357
         java.util.Collection hrApp_StatelessSessionBeanWrapper2.getEmployeesByDepartment(java.lang.Long)
              hrApp_StatelessSessionBeanWrapper2.java:323
         java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])
              native code
         void com.evermind.server.rmi.RMICallHandler.run(java.lang.Thread)
              RMICallHandler.java:119
         void com.evermind.server.rmi.RMICallHandler.run()
              RMICallHandler.java:48
         void EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()
              PooledExecutor.java:803
         void java.lang.Thread.run()
              Thread.java:484
    at connection to localhost/127.0.0.1
         void com.evermind.server.rmi.OrionRemoteException.receive(java.net.InetAddress, java.lang.String)
              OrionRemoteException.java:130
         void com.evermind.server.rmi.RMIConnection.handleMethodInvocationResponse()
              RMIConnection.java:1673
         void com.evermind.server.rmi.RMIConnection.run(java.lang.Thread)
              RMIConnection.java:532
         void com.evermind.server.rmi.RMIConnection.run()
              RMIConnection.java:275
         void EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()
              PooledExecutor.java:797
         void java.lang.Thread.run()
              Thread.java:484
    Any ideas?
    Thanks

    I would suggest opening a case with [email protected] FWIW, I recall seeing
              something like this in WLS 6.0. I believe it is fixed in WLS 6.1
              -- Rob
              Chris Dupuy wrote:
              > Btw, this occurs when I create an stateful session bean that ends up
              > throwing an exception and setRollbackOnly() is called. From that point
              > forward, my logs fill with this message.
              >
              > Chris
              >
              > "Chris Dupuy" <[email protected]> wrote in message
              > news:[email protected]..
              > > anyone know what this means, and what you can do about it?
              > >
              > >
              > > <Error> <ConnectionManager> <atossd03> <cbeyondServer> <ExecuteThread:
              > '14'
              > > for queue: 'd
              > > efault'> <> <> <000000> <Closing:
              > 'weblogic.rjvm.t3.T3JVMConnection@488831'
              > > because of: 'Server received a message over an uniniti
              > > alized connection: 'JVMMessage from: 'null' to:
              > >
              > '5825313123619479267S:10.6.6.40:[8000,8000,8001,8001,8000,8001,-1]:cbeyond:c
              > > beyond
              > > Server' cmd: 'CMD_REQUEST', QOS: '101', responseId: '2', invokableId: '1',
              > > flags: 'JVMIDs Not Sent, TX Context Not Sent', abbrev o
              > > ffset: '204'''>
              > >
              > >
              > >
              

  • Dom returned from ejb

    Has any one returned a DOM from an ejb call? I have heard that there
    maybe some marshalling problem.

    When you say that the problem is in deploying, do you mean running EJBC or
    the deployer tool?
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    http://www.tangosol.com
    +1.617.623.5782
    WebLogic Consulting Available
    "Tom Holmes" <[email protected]> wrote in message
    news:[email protected]..
    How did you return an XML DOM from your EJB. I am using wls 510 w/ sp5. Idownloaded the JAXP1.1 from Sun. I moved the following files crimson.jar,
    xalan.jar, and jaxp.jar to the following:e:\jdk1.3\jre\lib\ext directory
    e:\weblogic\lib directory.I created a BMP EJB and this was working just
    fine, but now I want this to return an XML DOM. So, I added the following
    imports:import javax.xml.parsers.DocumentBuilderFactory;import
    javax.xml.parsers.DocumentBuilder;import
    javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.*;Now when
    I try to deploy the EJB, I get the following error:"The set of files for:
    User.jarcontains unresolved references for the following
    classes:challenge.ejb.UserBeanrequires:
    javax/xml/parsers/DocumentBuilderFactoryPlease add the additional files
    neccessary to obtain these classes, orremove the files which reference
    them."I added the files jaxp.jar, xalan.jar, and crimson.jar to the end of
    the weblogic class path in my startweblogic.cmd file. The files are in this
    order, and I have moved these to the beginning, middle, and end of the
    weblogic class path, and nothing so far has seemed to help.Do you (or anyone
    else) know how I can return an XML DOM from an EJB, or how I can resolve
    this error during deployment. Any help would be most appreciated.If I can
    provide any more information, please let me know. Thanks. Tom

  • How to return data from Ejb as collection to Front End application.

    Hi,
    I am creating a J2ee application. Here i am accessing BAPIs using stateless session bean through JCO connection. Now the BAPI is returning a return Table and return Structure to the EJB.
    I have coded the following code in one of the Ejb Method as follows:
    JCO.Table returnTable = null;
    JCO.Structure returnStructure = null;
    JCO.ParameterList paramList = siteBAPI.getExportParameterList();
    JCO.ParameterList paramList2 = siteBAPI.getTableParameterList();
    returnTable = paramList2.getTable("SITE_SUBSITE_INSTL");
    returnStructure = paramList.getStructure("BAPIRET2");
    Now i want to sent this data( returnTable & returnStructure) to front end application where front end developer accessing this returned data using Jsp.
    My scenario is that , first i want to convert this returnTable & returnStructure in a single collection and then sent this collection to Front end.
    My aim is that , the front end the application should not receive the Data, using JCO.table Variable but as a single Collection.
    I am using NWDI-2004s sps10.
    i need urgent help on this issue and i would really appreciate if somebody can put the answer with some sample code on how to return the data as Collection.

    if you want to return a result, then you probably shouldn't be using a message bean. message beans for for asynchronous tasks. session beans for for synchronous tasks. thus it would make much more sense to have your jsp call the session bean directly.

  • Can l make an instance of EJB home handler / Datasource shared by EJB objs

    all ejb guru
    As far as l know, it is general rule of thumb to cache the EJB home handlers and datasource object at EJB bean instance. But can l go a step further, make the same instance of EJB home handlers and datasource object shared by more than 1 EJB bean instance ?
    ( l checked out the methods of javax.ejb.EJBhome and javax.sql.DataSource. They are not declared as synchronized. It seems to me that EJB home handlers and datasource object are not thread safe and not suitable for being shared. Even they are thread-safe, if they are shared by 1+ EJB bean instance. Sharing EJB home handlers and datasource object may interfere the thread management of EJB container. Am l correct ? )
    It is highly appreciated someone can share with me your insight in this issue.
    thanks & regards
    Danny

    Okay, you got me there. However, it's usually a better practice to start a new thread with your specific question instead of resurrecting old threads that (obviously) nobody cared enough to answer.
    DataSources are retrieved from the container via JNDI. You may (generally) cache them in order to alleviate the JNDI lookup without worrying about Threads, as there is only (usually) one DataSource object per server (or node in a cluster). Do not cache (in your code) the Connection objects obtained from the DataSource - always close them in order to return them to the pool maintained by the DataSource.
    Caching EJB HomeHandles is the accepted manner of avoiding repeated JNDI calls to locate EJBs. Typically, extracting the EJBHome from the HomeHandle re-initializes whatever network operations are embedded in the EJBHome object(s) by the vendor's implementation. Once again, you do not necessarily need to worry about Threads - the container and vendor implementation is already taking care of that for you, transparently.
    Think about it: if there were Threading issues, even retrieving the above objects via JNDI would ensure that J2EE application servers wouldn't be Thread safe and all operations would be, essentially, blocked each time. Obviously, this is not the case since both DataSources and EJBHome objects can have multiple clients using them simultaneously. Just because there's not explicit synchronized tag on any of the methods defined in these interfaces doesn't mean they're single-Thread objects.

  • Help! How to convert an instance from java.lang.Object to a particula class

    * How to convert an instance from java.lang.Object class to a particular class
    witch is known only at the running time?
    Roster EJB component is make up of RosterHome, Roster and RosterBean.
    RosterHome is the home interface of Roster EJB.
    Roster is the remote interface of Roster EJB.
    RosterBean is the implement of Roster EJB.
    The following code segment is to invoke Roster EJB component.
    String jndiName="roster.RosterHome";
    javax.naming.Context initial = getInitialContext();//getInitialContext() returns a instance of Context.
    Object objref = initial.lookup(jndiName);
    RosterHome home =
    (RosterHome)javax.rmi.PortableRemoteObject.narrow(objref,
    RosterHome.class);
    Roster myRoster = home.create();
    String team="T1"
    String player="Tom"
    myRoster.addPlayer(player,team);
    But, now, all the home interface, the remote interface and the JNDI Name of
    Roster EJB component are not been known at the compiling time. However They are
    known at the running time, throught reading from the XML config file.
    Questions:
    1,How to write code for this case ? or
    2,How to convert an instance from Object class to a particular class witch is known
    only at the running time?
    String jndiName="roster.RosterHome";// in fact, reads from XML file.
    String homeClassName="roster.RosterHome";// in fact, reads from XML file.
    String remoteClassName="roster.Roster";// in fact, reads from XML file.
    javax.naming.Context initial = getInitialContext();//getInitialContext() returns a instance of Context.
    Object objref = initial.lookup(jndiName);
    Object objHome= javax.rmi.PortableRemoteObject.narrow(objref,
    Class.forName(homeClassName));
    /* how to do next?
    }

    I am not sure what you are trying to do. But at some point you should know which methods to call on the remote interfaces. Maybe the method names are stored in the XML file as well or you have a set of standard method names (also consider parameters).
    However, this can be solved by reflection. Look at the java.lang.reflect package, especially java.lang.reflect.Method, and also at java.lang.Class.
    If you are doing this on the app server:
    I've seen posts where people say that reflection is not permitted in EJB, but I don't think so. Check the EJB spec.
    If you are doing this in an application: reflection is always permitted. Probably also in applets and JSP.

  • Cannot a get JSP page instance from a page being destroyed

    We have a J2EE app, using Struts + Tiles (build 1.1-b3), running on Win2KPro, Ora9ias v9.0.3. The application is roles-based, and different users see different versions of the same page based on their role authorizations. Occasionally, when multiple users in different roles are requesting the same page, the app returns the following exception:
    OracleJSP:
    JSP Error:
    Request URI:/fast/WEB-INF/jsp/tiles/layouts/baseLayout.jsp
    Exception:
    javax.servlet.ServletException: Cannot a get JSP page instance from a page being destroyed
         at oracle.jsp.runtimev2.JspPageInstFacade.getInstance(JspPageInstFacade.java:147)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:303)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:465)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:379)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:283)
         at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
         at com.gal.fast.portal.web.SessionInitializedFilter.doFilter(SessionInitializedFilter.java:105)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:556)
         at com.evermind.server.http.ServletRequestDispatcher.include(ServletRequestDispatcher.java:119)
         at org.apache.struts.tiles.TilesUtilStrutsModulesImpl.doInclude(TilesUtilStrutsModulesImpl.java:124)
         at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:161)
         at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:703)
         at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:818)
         at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:467)
         at web2d_inf._jsp._tiles._layouts._baseLayout._jspService(_baseLayout.java:445)
         [SRC:/WEB-INF/jsp/tiles/layouts/baseLayout.jsp:149]
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:317)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:465)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:379)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:283)
         at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
         at com.gal.fast.portal.web.SessionInitializedFilter.doFilter(SessionInitializedFilter.java:105)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:556)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:306)
         at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:209)
         at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1033)
         at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:269)
         at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:249)
         at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:303)
         at org.apache.struts.action.RequestProcessor.processActionForward(RequestProcessor.java:401)
         at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
         at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:505)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
         at com.gal.fast.portal.web.FastActionServlet.service(FastActionServlet.java:110)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:283)
         at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
         at com.gal.fast.portal.web.SessionInitializedFilter.doFilter(SessionInitializedFilter.java:105)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:556)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:306)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:767)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:148)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:72)
         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:803)
         at java.lang.Thread.run(Thread.java:536)
    All the code in the two custom classes above ( com.gal.fast.portal.web.SessionInitializedFilter and com.gal.fast.portal.web.FastActionServlet ) has been commented out to the point that they are NOOP stubs.
    We only see this with multiple near-simultaneous requests for the same page with differet roles. It smells like a threading issue to me, but I'm no expert (hence this post). Any thoughts?
    --matt

    We have a J2EE app, using Struts + Tiles (build 1.1-b3), running on Win2KPro, Ora9ias v9.0.3. The application is roles-based, and different users see different versions of the same page based on their role authorizations. Occasionally, when multiple users in different roles are requesting the same page, the app returns the following exception:
    OracleJSP:
    JSP Error:
    Request URI:/fast/WEB-INF/jsp/tiles/layouts/baseLayout.jsp
    Exception:
    javax.servlet.ServletException: Cannot a get JSP page instance from a page being destroyed
         at oracle.jsp.runtimev2.JspPageInstFacade.getInstance(JspPageInstFacade.java:147)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:303)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:465)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:379)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:283)
         at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
         at com.gal.fast.portal.web.SessionInitializedFilter.doFilter(SessionInitializedFilter.java:105)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:556)
         at com.evermind.server.http.ServletRequestDispatcher.include(ServletRequestDispatcher.java:119)
         at org.apache.struts.tiles.TilesUtilStrutsModulesImpl.doInclude(TilesUtilStrutsModulesImpl.java:124)
         at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:161)
         at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:703)
         at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:818)
         at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:467)
         at web2d_inf._jsp._tiles._layouts._baseLayout._jspService(_baseLayout.java:445)
         [SRC:/WEB-INF/jsp/tiles/layouts/baseLayout.jsp:149]
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:317)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:465)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:379)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:283)
         at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
         at com.gal.fast.portal.web.SessionInitializedFilter.doFilter(SessionInitializedFilter.java:105)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:556)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:306)
         at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:209)
         at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1033)
         at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:269)
         at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:249)
         at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:303)
         at org.apache.struts.action.RequestProcessor.processActionForward(RequestProcessor.java:401)
         at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
         at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:505)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
         at com.gal.fast.portal.web.FastActionServlet.service(FastActionServlet.java:110)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:283)
         at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
         at com.gal.fast.portal.web.SessionInitializedFilter.doFilter(SessionInitializedFilter.java:105)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:556)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:306)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:767)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:148)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:72)
         at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:803)
         at java.lang.Thread.run(Thread.java:536)
    All the code in the two custom classes above ( com.gal.fast.portal.web.SessionInitializedFilter and com.gal.fast.portal.web.FastActionServlet ) has been commented out to the point that they are NOOP stubs.
    We only see this with multiple near-simultaneous requests for the same page with differet roles. It smells like a threading issue to me, but I'm no expert (hence this post). Any thoughts?
    --matt

  • Returning multiple instances of the same object?

    I have a fairly straight forward swing test class that contains a combobox. The problem is that an object is not selected in the combobox because I get different objects when building the list and when setting the selected item.
    To test this, I've added the following set of 4 lines on three locations in the code:
    - immediately after Toplink is initialized
    - when setting the selected item
    - when the main exits (and the JFrame is open)
    Stand s = Stand.findByPK(4).getDerrivedfromstand();
    System.out.println( s + ", Using EM #" + Integer.toHexString( lEntityManager.hashCode() ) );
    s = Stand.findByPK(1);
    System.out.println( s + ", Using EM #" + Integer.toHexString( lEntityManager.hashCode() ) );
    I happen to know that Stand 4 is derrived from Stand 1. So I get Stand 1 once via Stand 4 and once directly. The result is:
    java.vm.version=1.6.0-b105
    [TopLink Info]: 2007.05.30 11:01:10.531--ServerSession(33414193)--TopLink, version: Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))
    [TopLink Info]: 2007.05.30 11:01:11.343--ServerSession(33414193)--file:/C:/Documents%20and%20Settings/toeu/My%20Documents/kp/reinders/reinders/voorraad/container/bm/build/-reinders login successful
    // immediatly after Toplink init
    [1] setObject=4 / SELECT ... FROM stand WHERE (standnr = >>>HERE<<< )
    executeQuery: SELECT ... FROM stand WHERE (standnr = ?)
    [1] setObject=1 / SELECT ... FROM stand WHERE (standnr = >>>HERE<<< )
    executeQuery: SELECT ... FROM stand WHERE (standnr = ?)
    nl.reinders.bm.Stand@1866417, Standnr=1, Using EM #1a8e53c
    [1] setObject=1 / SELECT ... FROM stand WHERE (standnr = >>>HERE<<< )
    executeQuery: SELECT ... FROM stand WHERE (standnr = ?)
    nl.reinders.bm.Stand@1866417, Standnr=1, Using EM #1a8e53c
    // when filling a combobox in the GUI
    executeQuery: SELECT ... FROM stand ORDER BY standid ASC
    getElementAt 0 = nl.reinders.bm.Stand@1866417, Standnr=1
    // when setting the value of the combobox
    executeQuery: SELECT ... FROM stand ORDER BY standid ASC
    [1] setObject=4 / SELECT ... FROM stand WHERE (standnr = >>>HERE<<< )
    executeQuery: SELECT ... FROM stand WHERE (standnr = ?)
    [1] setObject=1 / SELECT ... FROM stand WHERE (standnr = >>>HERE<<< )
    executeQuery: SELECT ... FROM stand WHERE (standnr = ?)
    nl.reinders.bm.Stand@171ef98, Standnr=1, Using EM #1a8e53c
    [1] setObject=1 / SELECT ... FROM stand WHERE (standnr = >>>HERE<<< )
    executeQuery: SELECT ... FROM stand WHERE (standnr = ?)
    nl.reinders.bm.Stand@171ef98, Standnr=1, Using EM #1a8e53c
    // when exiting the main (JFrame is open)
    [1] setObject=1 / SELECT ... FROM stand WHERE (standnr = >>>HERE<<< )
    executeQuery: SELECT ... FROM stand WHERE (standnr = ?)
    nl.reinders.bm.Stand@171ef98, Standnr=1, Using EM #1a8e53c
    [1] setObject=4 / SELECT ... FROM stand WHERE (standnr = >>>HERE<<< )
    executeQuery: SELECT ... FROM stand WHERE (standnr = ?)
    nl.reinders.bm.Stand@171ef98, Standnr=1, Using EM #1a8e53c
    [1] setObject=1 / SELECT ... FROM stand WHERE (standnr = >>>HERE<<< )
    executeQuery: SELECT ... FROM stand WHERE (standnr = ?)
    nl.reinders.bm.Stand@171ef98, Standnr=1, Using EM #1a8e53c
    What is amazing is that somewhere after the combobox is filled, the query returns another instance of the same record and thus the select item will not find an "equal" object in the list. Any suggestions?

    Nevermind. A clear was done on the EM somewhere down the line.

  • Error while running ejbc. Fatal error from EJB Compiler ---- Error while pr

    Hi!
    I was deploying a test application for a session bean with sun 1 studio 5 and I started getting this message while deploying.
    I had tested the bean previously and I had no problems.
    I found this in the sun app server 7 release notes, but I don't understand what I'm supposed to do...
    "Deployment of CMP beans fails.
    The following error is thrown because there are no <query-params> entries in the container-managed persistence (CMP) bean in sun-ejb-jar.xml file:
    Error while running ejbc. Fatal error from EJB Compiler ---- Error while processing CMP beans.
    Solution
    Even if it isn't necessary for the CMP beans, add the query-params tag for finders in the sun-ejb-jar.xml file with the empty parameters."
    Here is my sun-ejb-jar.xml file:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 EJB 2.0//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-ejb-jar_2_0-0.dtd">
    <sun-ejb-jar>
    <enterprise-beans>
    <name>GestorDoBanco_EJBModule</name>
    <ejb>
    <ejb-name>Cliente</ejb-name>
    <jndi-name>ejb/Cliente</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/Cliente.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>ClienteAssociadoAConta</ejb-name>
    <jndi-name>ejb/ClienteAssociadoAConta</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/ClienteAssociadoAConta.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>Conta</ejb-name>
    <jndi-name>ejb/Conta</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/Conta.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>GestorDoBanco</ejb-name>
    <jndi-name>ejb/GestorDoBanco</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    </ejb>
    <ejb>
    <ejb-name>MensagemM003</ejb-name>
    <jndi-name>ejb/MensagemM003</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/MensagemM003.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>MensagemM003Rejeitada</ejb-name>
    <jndi-name>ejb/MensagemM003Rejeitada</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/MensagemM003Rejeitada.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>MensagemM012</ejb-name>
    <jndi-name>ejb/MensagemM012</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/MensagemM012.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>MensagemM012Rejeitada</ejb-name>
    <jndi-name>ejb/MensagemM012Rejeitada</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/MensagemM012Rejeitada.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>MensagemM103</ejb-name>
    <jndi-name>ejb/MensagemM103</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/MensagemM103.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>MensagemM112</ejb-name>
    <jndi-name>ejb/MensagemM112</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/MensagemM112.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>Registo</ejb-name>
    <jndi-name>ejb/Registo</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/Registo.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>TransaccaoConfirmada</ejb-name>
    <jndi-name>ejb/TransaccaoConfirmada</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/TransaccaoConfirmada.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>TransaccaoFinalizada</ejb-name>
    <jndi-name>ejb/TransaccaoFinalizada</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/TransaccaoFinalizada.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <ejb>
    <ejb-name>TransaccaoIniciada</ejb-name>
    <jndi-name>ejb/TransaccaoIniciada</jndi-name>
    <pass-by-reference>false</pass-by-reference>
    <cmp>
    <mapping-properties>pcImpl0/moduleComp1/Data/TransaccaoIniciada.mapping</mapping-properties>
    </cmp>
    <refresh-period-in-seconds>600</refresh-period-in-seconds>
    </ejb>
    <pm-descriptors>
    <pm-descriptor>
    <pm-identifier>SunONE</pm-identifier>
    <pm-version>1.0</pm-version>
    <pm-class-generator>com.iplanet.ias.persistence.internal.ejb.ejbc.JDOCodeGenerator</pm-class-generator>
    <pm-mapping-factory>com.iplanet.ias.cmp.NullFactory</pm-mapping-factory>
    </pm-descriptor>
    <pm-inuse>
    <pm-identifier>SunONE</pm-identifier>
    <pm-version>1.0</pm-version>
    </pm-inuse>
    </pm-descriptors>
    <cmp-resource>
    <jndi-name>mysqlpmanager</jndi-name>
    <default-resource-principal>
    <name>bes</name>
    <password>besbes</password>
    </default-resource-principal>
    </cmp-resource>
    </enterprise-beans>
    </sun-ejb-jar>
    Thanks in advance for any help.
    Nuno

    http://docs.sun.com/source/817-2175-10/decmp.html
    Please go to the above docs and look thru the examples given in it.
    Example 2
    This query returns all products in a specified price range. It defines two query parameters which are the lower and upper bound for the price: double low, double high. The filter compares the query parameters with the price field:
    "low < price && price < high"
    The finder element of the sun-ejb-jar.xml file would look like this:
    <finder>
    <method-name>findInRange</method-name>
    <query-params>double low, double high</query-params>
    <query-filter>low < price && price &lt
    high</query-filter
    </finder>
    I hope this hepls. In your case u just have to make it null.

  • Calling stored procedure from EJB in JSever

    I have some trouble to call stored procedure from EJB deployed to JServer on Oracle8i (815).
    I have been able to sucessfully test the stored procedure using thin client JDBC driver. But when I user the default connection in JServer, the stored procedure never got called. Is there any restriction of EJB in JServer?
    Thanks
    null

    Thanks man! that was a great help. looks like i am almost there. i created those items t obe hidden.
    now i am passing three parameters to the procedure. my url for that column value looks like this,
    javascript:P65_PARTITION_ID=#PARTITION_ID#;P65_DBC=#DBC#;P65_FILE_ID=#FILE_ID#;doSubmit('Sku_Save');
    the #DBC# parameter is a name of the person that has spaces(firstname lastname). i am getting a javascript error saying,
    Line: 1
    Char: 37
    Error:Expected ';'
    i see that char 37 is the space after firstname.
    any idea how i should get rid of this error.
    Also, as you have been very helpful, a question further beyond :). the above procedure will return a OUT varchar parameter. i guess i have to create another item for that. how do i read it and display just below my report as text.
    Thanks Again!

  • Call RFC from EJB using SSO

    Can anyone point me in the right direction on the best practice for calling an RFC using SSO from an EJB?
    When using the local interface for the EJB, the only solution I see is to pass the authenticated IUser instance from the portal component to the EJB business method through the method signature.
    I am guessing that there is a better way to get access to an authenticated user in the EJB container.

    Thanks for the reply.
    Actually I was able to solve the problem last night. To get SSO to work in my local EJBs I created an RFC destination in the destination service using the visual administrator. I then used the destination service at runtime to pull the system definition from the J2EE system definitions store instead of the portal system landscape definitions and my connection object was created as expected.
    Here is the code to create the connection in my EJB business method:
    //get the user
    IUser user = UMFactory.getUserFactory().getUserByUniqueName(this.myContext.getCallerPrincipal().getName());
    // get the destination service
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sapportals.portal.prt.registry.PortalRegistryFactory");
    InitialContext context = new InitialContext(env);
    IDestinationsService destinationsService =
         (IDestinationsService) context.lookup(IDestinationsService.SERVICE_JNDI_NAME);
    // define a destination filter to restrict to the RFC defined destinations
    DestinationFilter destinationFilter1 =
         new DestinationFilter(DestinationFilter.SOURCE_J2EE_DESTINATION_SERVICE, DestinationFilter.TYPE_SAP);
    // get a user specific connection
    IConnection connection = destinationsService.getConnection(user, "ECC", destinationFilter1);

  • How to get File Reference of a properties file from EJB

    Hi,
    I am using Sun App server 7 with Oracle 9i. I am keeping all my SQL statements in a properties file from which I am loading it while making a database operation from Stateless beans. My problem is I am not able to get the reference of the properties file. Here is the code through which I am getting the SQL statements loaded to a cache.
    String sqlFileName = "SQL.properties";
    sqlCache.load(new FileInputStream(sqlFileName));
    From the cache I am sending the SQL statement depending on the key value. But the problem is I have to keep the SQL.properties file on the App Server config directory of the instance where the server.xml file resides. Otherwise it is not able to find the properties file. But I don't want to put the properties file on the config directory of the server instance. Please help how to get the properties file from the packakge. My file is residing inside a package com.company.sql . Botht the properties file and the class accessing the file are residing in the same package. Please help how to get the reference of the file with out putting the file in the config directory.
    Thanks
    Amit Patnaik

    Just wanted to warn you of the hazards if you read a file from EJB
    So please make sure that these hazards will not affect your application. However the solution suggested to use getResourceStream() concurs with ejbSpec
    This snippet is from suns blueprint on ejb
    Why can't EJBs read and write files and directories in the filesystem? And why can't they access file descriptors?
    Enterprise beans aren't allowed to access files primarily because files are not transactional resources. Allowing EJBs to access files or directories in the filesystem, or to use file descriptors, would compromise component distributability, and would be a security hazard.
    Another reason is deployability. The EJB container can choose to place an enterprise bean in any JVM, on any machine in a cluster. Yet the contents of a filesystem are not part of a deployment, and are therefore outside of the EJB container's control. File systems, directories, files, and especially file descriptors tend to be machine-local resources. If an enterprise bean running in a JVM on a particular machine is using or holding an open file descriptor to a file in the filesystem, that enterprise bean cannot easily be moved from one JVM or machine to another, without losing its reference to the file.
    Furthermore, giving EJBs access to the filesystem is a security hazard, since the enterprise bean could potentially read and broadcast the contents of sensitive files, or even upload and overwrite the JVM runtime binary for malicious purposes.
    Files are not an appropriate mechanism for storing business data for use by components, because they tend to be unstructured, are not under the control of the server environment, and typically don't provide distributed transactional access or fine-grained locking. Business data is better managed using a persistence interface such as JDBC, whose implementations usually provide these benefits. Read-only data can, however, be stored in files in a deployment JAR, and accessed with the getResource() or getResourceAsStream() methods of java.lang.Class.
    Hope this info helps!

Maybe you are looking for

  • Error Deploying Acrobat via AD in Server 2008 R2

    Hi Folks, We've recently migrated all our Active Directory domain controllers from Windows Server 2003 to Server 2008 R2. We previously deployed all major apps (including a number of Adobe products) using group policy deployment via msi's which worke

  • NAC Discovery host

    I have  one query,  I am running in OOB mode, I have multiple servers running in OOB  mode for the branches. How can I add their IP address if you an tell me it will  be great? Should I put them in the DNS sever? For example 172.16.28.241  –HQ.nas.co

  • Problems witth sql query from servlet

    hi, I have a servlet that accesses a MySql database to get the ID of an employee based on employee name (grabbed from session). My problem is that : empName contains a whitespace (String empName ="abc xyz") When I try to give this to the query: Strin

  • Install Solaris 8 on Ultra Sparc 5

    Hello! All I am trying to format my hard Drive which running on Solaris 7 and install Solaris 8. Could someone tell me the step by step process(in detail) to finish this job? Thanks John

  • Regarding Exception in WebService

    Hi all,     I have installed Business One in my system.My requirement is to display the sales order details.I am using java connector and SAP NetWeaver Developer Studio for this purpose. process: --I've also included external jar files sboapi.jar and