Performaing IO from EJB

Hi,
We had to write data to files during startup (creation) of our ejb session beans to implement our business logic.
But I heard performing IO operations from ejb is not adviceable.
Can anyone let me know the shortcomings (that we have to be aware) of doing io from session bean and also is there any alternate solution for this.?
Thanks,
Raja

Hi Raja,
You have two main issues:
Location independance. In a distributed application is the file that you are writing to the same file. e.g. A session bean can be running on any server.
Resource management. The container is not managing the resource so you have to, there are concurrency issues and transactional issues.
If you can avoid using a file avoid it. e.g. Memory cache, database. If you need a file then maybe look at a JCA adapter.
John.

Similar Messages

  • 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.

  • Error while calling PI webservice from EJB

    Hi Experts,
    We are getting exception while calling PI webservice from EJB which is deployed in CE 7.2. Earlier we used to call the same webservice but from different PI system at that it worked fine. Now we have changed the consumer proxies required in CE and tried to call from CE and it is throwing error. We have checked usernames and passwords that we are using to call the service and that is working fine. PI team tested from their side and li is also fine. We have also restarted the CE system but invain. Can somebody help on this.  The below is the trace that we got.
    Location: com.sap.engine.services.webservices.espbase.client.bindings.impl.SOAPTransportBinding
    Text: Connection IO Exception. Check nested exception for details. (Connection reset).
    [EXCEPTION]
    com.sap.engine.services.webservices.espbase.client.bindings.exceptions.TransportBindingException: Connection IO Exception. Check nested exception for details. (Connection reset).
    at com.sap.engine.services.webservices.espbase.client.bindings.impl.SOAPTransportBinding.outputSOAPMessage(SOAPTransportBinding.java:419)
    at com.sap.engine.services.webservices.espbase.client.bindings.impl.SOAPTransportBinding.call_SOAP(SOAPTransportBinding.java:1364)
    at com.sap.engine.services.webservices.espbase.client.bindings.impl.SOAPTransportBinding.callWOLogging(SOAPTransportBinding.java:990)
    at com.sap.engine.services.webservices.espbase.client.bindings.impl.SOAPTransportBinding.call(SOAPTransportBinding.java:944)
    at com.sap.engine.services.webservices.espbase.client.jaxws.core.WSInvocationHandler.processTransportBindingCall(WSInvocationHandler.java:168)
    at com.sap.engine.services.webservices.espbase.client.jaxws.core.WSInvocationHandler.invokeSEISyncMethod(WSInvocationHandler.java:121)
    at com.sap.engine.services.webservices.espbase.client.jaxws.core.WSInvocationHandler.invokeSEIMethod(WSInvocationHandler.java:84)
    at com.sap.engine.services.webservices.espbase.client.jaxws.core.WSInvocationHandler.invoke(WSInvocationHandler.java:65)
    at $Proxy780.mioaRDMDataDistribution(Unknown Source)
    at com.MDMEventListener.callToPIWS(MDMEventListener.java:100)
    at com.MDMEventListener.ListenerMethod(MDMEventListener.java:173)
    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:597)
    at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_WS.invoke(Interceptors_WS.java:31)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:39)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:23)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)
    at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
    at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)
    at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
    at com.sap.engine.services.ejb3.webservice.impl.DefaultImplementationContainer.invokeMethod(DefaultImplementationContainer.java:203)
    at com.sap.engine.services.webservices.espbase.server.runtime.RuntimeProcessingEnvironment.process0(RuntimeProcessingEnvironment.java:730)
    at com.sap.engine.services.webservices.espbase.server.runtime.RuntimeProcessingEnvironment.preProcess(RuntimeProcessingEnvironment.java:682)
    at com.sap.engine.services.webservices.espbase.server.runtime.RuntimeProcessingEnvironment.process(RuntimeProcessingEnvironment.java:324)
    at com.sap.engine.services.webservices.runtime.servlet.ServletDispatcherImpl.doPostWOLogging(ServletDispatcherImpl.java:199)
    at com.sap.engine.services.webservices.runtime.servlet.ServletDispatcherImpl.doPost(ServletDispatcherImpl.java:65)
    at com.sap.engine.services.webservices.servlet.SoapServlet.doPost(SoapServlet.java:61)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:152)
    at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:38)
    at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:404)
    at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:204)
    at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:440)
    at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:429)
    at com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:38)
    at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    at com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:82)
    at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    at com.sap.engine.services.servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:268)
    at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    at com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:81)
    at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
    at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    at com.sap.engine.services.httpserver.filters.ResponseLogWriter.process(ResponseLogWriter.java:60)
    at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
    at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    at com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27)
    at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
    at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    at com.sap.engine.services.httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29)
    at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
    at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    at com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:54)
    at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
    at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    at com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:42)
    at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
    at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    at com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:447)
    at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:264)
    at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:56)
    at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)
    at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101)
    at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)
    Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:168)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
    at com.sap.engine.services.webservices.jaxm.soap.HTTPSocket.readLine(HTTPSocket.java:950)
    at com.sap.engine.services.webservices.jaxm.soap.HTTPSocket.getInputStream(HTTPSocket.java:414)
    at com.sap.engine.services.webservices.jaxm.soap.HTTPSocket.getResponseCode(HTTPSocket.java:319)
    at com.sap.engine.services.webservices.espbase.client.bindings.ClientHTTPTransport.getResponseCode(ClientHTTPTransport.java:209)
    at com.sap.engine.services.webservices.espbase.client.bindings.impl.SOAPTransportBinding.outputSOAPMessage(SOAPTransportBinding.java:385)
    ... 78 more
    Regards,
    Pradeep

    Hi Pradeep,
    this looks like if the server is not reachable. Have you checked if both server are able to communicate? Maybe firewall rules block the request.
    Regards,
    Tobias

  • Web service from ejb

    Hi All,
    I am new to java web services.
    I made web services from ejb with netbeans.
    I like only some people to have access to this services with user and pass stored in database.
    In other words I need authentication and authorization.
    How can I do this?
    Regards

    Well it depends also on application server you are using.
    It depends also on web service stack you are using.
    For example here is the hint for glassfish (Metro):
    http://java.sun.com/javaee/5/docs/tutorial/doc/bncbe.html#bncbn
    Miro.

  • 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!

  • JCo 3.0  - RFC call from EJB with SSO

    Hello,
    I am trying to call abap using JCo 3.0 from EJB (NW CE 1.0). I have configured destination on server with authentication method to use SAP Logon tickets. But when I call my EJB method that looks like this:
    JCoDestination dest=JCoDestinationManager.getDestination("RFCCallTest");
    JCoRepository repo=dest.getRepository();
    JCoFunction f= repo.getFunction("ZMG_RET_NAME");
    JCoParameterList in=f.getImportParameterList();
    in.setValue(0, "param1");
    f.execute(dest);
    I get an exception when executing the first line of code:
    Message:     Exception occurred during lookup of RFC Destination RFCCallTest: No SAP logon ticket found
    Category:     /System/Security
    Location:com.sap.security.core.server.destinations.provider.DestinationsProviderFrame.getDestinationProperties()
    When I change the destination authentication method to Technical user it works well.
    SSo between the servers works.
    This scenarion also works when I use older JCo implementation (2.x)
    BR
    Viktor

    Hi Bill,
    I too faced the same problem for quite some time on SP9. I thought it was the adapter problem that persisted ...but it was not !!
    After importing the RFC structure into XI, if the name of the imported RFC program is renamed/changed on R/3 side, then you will get the same error "lookup of binding via CPA-cache failed for AdapterType RFC, AdapterN."
    So make sure that RFC program name on the R/3 side was not changed/renamed after you have imported the RFC structure into XI.
    If the RFC program name had changed, make sure you reimport the RFC structure to avoid this problem.
    Regards,
    Sridhar

  • 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!

  • How to refer utitlity jar from EJB jar in ear?

    hi, all,
    I want to refer an existing jar file from EJB, but i do not know how to do it? please help!
    Thanks.

    I am using weblogic 6.1

  • How to pull data from EJB and present them using Swing ?

    Hi all,
    I've written stateful session bean which connect to Oracle database, and now I must write stand alone client application using Swing.
    The client app must present the data and then let users add,delete and edit data and it must be flexible enough to iterate through the records.
    The swing components can be JTextField,JTable etc.
    How to pull the data from EJB and present them to users with the most efficient network trip ?
    Thanks in advance
    Setya

    Thanks,
    Since the whole app originally was client-server app and I want to make it more scalable, so I decide to separate business logic in the EJB but I also want to keep the performance and the userfriendliness of the original user interface, and I want to continue using Swing as the original user interface does.
    I've read about using Rowset and I need some opinions about this from you guys who already have some experience with it.
    Any suggestions would be greatly appreciated.
    Thanks
    Setya

  • How to access LoginModule from EJB?

    Hello,
    I have developed a custom login module and deploying my EJB by defining to use this custom login module.
    Here is what I defined in orion-application.xml
       <jazn-loginconfig>
          <application>
             <name>CVTApplication</name>
                <login-modules>
                   <login-module>
                      <class>cvt.security.SampleLoginModule</class>
                      <control-flag>required</control-flag>
                      <options>
                         <option>
                            <name>debug</name>
                            <value>true</value>
                         </option>
                      </options>
                   </login-module>
                </login-modules>
          </application>
       </jazn-loginconfig>
    ...How can I call any of the methods that are defined in the custom login module within my EJB? How can I access to the custom login module class from EJB?
    Thanks,
    Mustafa

    Simon McQueen <[email protected]> writes:
    Then presumably to use SSL you would do
    NameService=iioploc://localhost:7002/NameService (assuming default ports) ?Since we don't support CSIv2 as yet I don't think SSL will work with a
    C++ orb client. I forget how we specify SSL in a java client for IIOP,
    but yes I think its through the connection rather than some iiops URL.
    The INS stuff isn't supported by the 1.3 Sun SDK CosNaming stuff tho'. Only IOR,
    iiop and iiopname as PROVIDER_URL values can be used with
    com.sun.jndi.cosnaming.CNCtxFactory for bootstrapping the Sun ORB as far as IRight, and even those generate an old-style INIT bootstrap
    request. The 1.3 stuff is very old and incorrect, I haven't checked
    whether 1.4 supports corbaloc, it certainly supports GIOP 1.2.
    But even so we still support those kind of requests, they key is that
    they are interoperable - you can use the same URL between restarts of
    the server, with host2ior you cannot.
    know. I think the WLS RMI/iiop docs and examples still recommend using this forUnfortunately the RMI-IIOP doc rewrite hasn't happened as yet. We
    continue to support the JDK context (because supporting a pure JDK
    client is a worthy goal for customers who want thin clients) but you
    will get superior results using WLInitialContextFactory and an
    appropriate IIOP URL (including corbaloc support and security in
    SP1). In addition you should never use the Sun context factory on a
    server, that will case the JDK Orb to be used instead of our RMI-IIOP
    runtime.
    client access (?). Clients will still have to use host2iior to get the two IOR s
    if they want to do SSL I suppose. Or is it possible to do iiop://localhost:7002
    ?I will check.
    andy

  • 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.

  • Calling a Java aplication from EJB container

    We have a standalone Java application which is thread safe, and works well when called from web container. Now we are planning to call this app from EJB container (We are using OC4J) i.e our client apps which call this Java app will be written as EJBs. Our concern is to make sure that our application's thread mechanism does not conflict with EJB Container's thread mechanism. Any thoughts on this will be appreciated. Thanks. (Mubashar Tariq)

    Thread management isn't really a problem as long as you keep a couple of things in mind:
    1. You(r EJB) can only act on incoming calls (or messages) or so to say
    2. You're not allowed to spawn threads when acting on an incoming call
    3. Calls via RMI may timeout (check the default SocketFactory for the timeout, I think it's about 3 mins)
    Calling an outside application isn't really a problem as well I think. As long as you remember the two rules above and the following: an EJB cannot have two 'clients'. So if your application gets called and you're somehow able to reach (within your standalone application) the EJB, you're not allowed to call it (because it's already called by somebody else, on which the EJB acts).
    Also you should check if OC4J (I don't really know) offers the possibility of having resourcemanagers for RMI. Just opening an RMI connection might not be possible from an EJB. HTTP however is (but then you would have to open an HTTP server at the client, the rules above would not apply then however).
    The solution I see:
    either bind a Object in the RMI Registry you create at the client or open a ServerSocket. Somehow the EJB making the client application gets called (via the Web part???), it contacts the client application via the ServerSocket or the RemoteObject and does it work. Then the business method ends and the thread the EJB is working on dies...
    alef

  • Calling .ejb from .ejb

    I am using Weblogic Workshop WLS8.1. I have one .ejb calling another .ejb. Appearenlty,
    MyBeanHome.java MyBean.java resolve in the workshop. But they are not resolving
    when I use ant build. Any suggestions.
    Thanks

    Hi John,
    check the following URLS's for your requirement
    1>procedure  for  Accessing  WebService in ejb By using NetWeaver,
    2>i am using webservice in ejb but it is giving Naming exception in NetWeaver  (if you get naming exception while calling webservice from ejb)
    3>http://help.sap.com/saphelp_webas630/helpdata/en/2c/ce9535c22ecd4db8820e238c3acce0/frameset.htm    (Accessing the Web Services Context from a WS-EJB )
    4>Webservice call does not return data
    Do reward points if it helps

  • FileNotFoundException thrown when opening a file for writing from EJB

    Hi,
    I know it is against EJB rules that access file IO from EJB. However we have a legacy system to working with and we need to generate a text file on file system.
    Weblogic (we are using 10.3) allows open a file for read from EJB. When we tried to open a writer like below:
    BufferedWriter writer = new BufferedWriter( new FileWriter(fileName, false));
    FileNotFoundException was thrown from the native method of open. The fileName is an absolute path and permission is properly set. The same piece of code can execute correctly in a test application with same filename.
    Does anyone know how to achieve this or whether Weblogic just forbids this kind of output access?

    Sorry guys. Just double-checked the source code and found out a bug produced wrong filename, the filename was surrounded by "", so FileNotFoundException is a correct result.
    Weblogic does allow read/write external file.

  • 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

Maybe you are looking for

  • Segmentation Error : Server returned HTTP response code: 500 for URL

    Hi, when we do customer segmentation in Applet Java Builder, we create a target group using 2 or more criterion, then it prompts us an error "Communication Error" - Server returned HTTP response code: 500 for URL: http//xxxxxxxxxxx/bc/bsp/sap/CRM_MKT

  • Using your personal domain name in .Mac/iWeb?

    Hi people, just a question about using my personal domain name which I have from UKreg. Anyone know how to use this in iWeb? I have looked at a few sites explaining it, but looks like a hard task! Thanks : )

  • Backup copy filenames when importing images

    When making a backup copy while importing images into Lightroom3 the backup copy is keeping its original camera raw file name instead of the new file name I am giving to the images I am importing. This just started happening--up until today the backu

  • Help! itunes has stopped my CDROM working

    I recently purchased a new laptop (Packard Bell EasyNote). After i installed itunes my CDROM drive stopped working. It is still spinning the discs, but in device manager it says that the Windows cannot find the hardware device? How can I solve this p

  • Facebook Chat Not Working in Lumia 520

    My Mobile isn't Connecting to Facebook in Message Inbox..