Regarding OC4j

Hi,
I have install Oracle BI 10.1.3.4. But I have got this error when i start this Oc4j server but i m getting following error while running this server.
cmd > C:\OracleBI\oc4j_bi\bin>oc4j -start
Starting OC4J from C:\OracleBI\oc4j_bi\j2ee\home ...
ERROR ServerFile[PersistentMap,/C:/OracleBI/oc4j_bi/j2ee/home/persistence/jm
s.state]: persistence file could not be locked. Resolve the sharing violation by ending the process
currently holding the file lock or by using a different persistence directory for one or both proce
sses.
*** (SEVERE) ServerFile[PersistentMap,/C:/OracleBI/oc4j_bi/j2ee/home/persistence/j
ms.state]: persistence file could not be locked. Resolve the sharing violation by ending the proces
s currently holding the file lock or by using a different persistence directory for one or both proc
esses
ERROR Failed to set the internal configuration of the OC4J JMS Server with:
XMLJMSServerConfig[file:/C:/OracleBI/oc4j_bi/j2ee/home/config/jms.xml]
(SEVERE) Failed to set the internal configuration of the OC4J JMS Server with:
XMLJMSServerConfig[file:/C:/OracleBI/oc4j_bi/j2ee/home/config/jms.xml]
ERROR J2EE OJR-00011 Exception starting JMS server: Failed to set the intern
al configuration of the OC4J JMS Server with: XMLJMSServerConfig[file:/C:/OracleBI/oc4j_bi/j2ee/home
/config/jms.xml]
ERROR J2EE RMI-00002 Error starting ORMI server bijalshah3229 port 23,791: A
ddress already in use: JVM_Bind
ERROR java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at com.evermind.server.rmi.RMIServer.createServerSocket(RMIServer.java:433)
at com.evermind.server.rmi.RMIServer.createNonSecureSocket(RMIServer.java:347)
at com.evermind.server.rmi.RMIServer.setConfig(RMIServer.java:210)
at com.evermind.server.ApplicationServer.initializeRMI(ApplicationServer.java:2378)
at com.evermind.server.ApplicationServer.setConfig(ApplicationServer.java:966)
at com.evermind.server.ApplicationServerLauncher.run(ApplicationServerLauncher.java:131)
at java.lang.Thread.run(Thread.java:595)
Error starting ORMI server bijalshah3229 port 23,791: Address already in use: JVM_
Bind
Shutting down OC4J...

To add this, i recently faced the similar issue.
1)Stop OBI server
2)Stop Presentationserver
3)Stop OC4j
4)Kill if any other process manually which says port already in use.
start the oc4j,do MORE OC4J - if u need any assistance.
This doesn't even start or stop if someone opened the OBI web page (port already in use) unless we kill it manually.
Thanks

Similar Messages

  • Regarding Oc4j server

    Hi all,
    I'm deploying my application in oc4j using build files.But after deplyoing while im trying to open sometimes im getting null but if i restart the server once again then i can able to access the application properly.., why im getting null sometimes.......,
    Plz reply fastly.........,
    Any comments are welcome.
    Regard's
    Rajani.

    Hi all,
    I'm deploying my application in oc4j using build
    files.But after deplyoing while im trying to open
    sometimes im getting null but if i restart the server
    once again then i can able to access the application
    properly.., why im getting null sometimes.......,
    Plz reply fastly.........,
    Any comments are welcome.
    Regard's
    Rajani.plz reply me ...............,

  • One Warning regarding oc4j

    OC4J's level of compliance to specifications is very high... and unfortunately Oracle's thin JDBC drivers are not completely JDBC2.0 compliant. You will find that oracle's drivers have several different non-standard ways to write LOBs which is what all oracle's docs are based on... but the JDBC2.0 compliant way of writing LOBs gives the thin driver problems. Basicly writing LOBs over 4K doesnt work. The OCI8 drivers does work though. Unfortunately an OCI8 driver does not yet exist for Linux :(
    Hopefully oracle will change this soon!!!

    Hi..
    Wouldn't worry about it, both these 2 are part of the core service bus, so no need to worry about the need to redeploy..
    ..Mark.

  • Regarding OC4J Standalone application -- "Out of Memory"

    Hi all,
    am installed the OC4J Standalone Application in windowns platform.......
    I am facing some problem.it's link "Out of Memory". my system RAM size is 2GB.
    we also increase JVM size in Server.xml file and also in command prompt. But again it is showing "Out Of Memory" and also we need to increase the OC4J file.
    Can anybody please help me to resolve this issue.
    Thanks in advance

    Can you post the actual exception you are seeing -- you may be running into the PermGen issue, which is different from the common heapsize issue.
    The JVM heapsize is not set in server.xml -- for standalone, its supplied on the command line where you start OC4J.
    For example:
    $>java -Xmx512m -Xms512m -jar oc4j.jar
    -steve-

  • Specifying system properties/security manager for OC4J

    I have a couple of related questions regarding OC4J/orion.jar:
    1. Generically, how can we specify system properties to orion.jar? Being an executable JAR, simply using -D does not work.
    2. Specifically, I need to launch the OC4J app server with a Java security manager (with associated security policies, etc.) Java's way of doing this is via -Djava.security.manager=... but this does not work with executable JARs it seems. I tried specifying these parameters via -D and I got a security exception:
    Exception in thread "main" java.security.AccessControlException: access denied (java.util.PropertyP
    rmission java.protocol.handler.pkgs write)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.System.setProperty(Unknown Source)
    at com.evermind.server.ApplicationServer.initProtocolHandlers(ApplicationServer.java:652)
    at com.evermind.server.ApplicationServer.launchCommandline(ApplicationServer.java:319)
    at com.evermind.server.ApplicationServer.main(ApplicationServer.java:314)
    So, how do I install the Java security manager with orion.jar? Is there any other way to specify system properties to this, or is there any other way to install the Java security manager for OC4J?
    Any help much appreciated.
    ..Hrishi

    Thanks, that seemed to work. However it seems that spawned another little problem. I was using the -Xbootclasspath/a option while firing up orion.jar because I needed to append something to OC4J's default classpath (that is specified in orion.jar's Manifest). Now, when I start OC4J with the -D options for the security policy, it seems to ignore the -Xbootclasspath argument. I have not yet been able to confirm this fact, but based on the ClassNotFoundError I'm running into, that does seem to be the problem.
    So I guess my question is, could specifying the -D options to the executable JAR cause it to ignore any other options you may be passing to it (such as -Xbootclasspath)? Is there any sequence in which these args need to be passed?
    Thanks.
    ..Hrishi
    Hi,
    You can try this :
    - Check if you have a file java2.policy in <OC4J_HOME>\config\policy and check if the permission java.util.PropertyPermission "read,write" is granted to <OC4J_HOME>.
    if there is no file, you can create one based on <JAVA_HOME>\lib\security\java.policy and grant the approriate privileges.
    - Launch OC4J :
    java -Djava.security.manager -Djava.security.policy=<OC4J_HOME>/config/java2.policy -jar orion.jar
    OR java -Djava.security.manager -Djava.security.policy=<PATH_TO_FILE_POLICY>/<YOUR_FILE>.policy -jar orion.jar
    Maher

  • Error while starting OC4J

    Hi,
    I have installed OBIEE 10.1.3.4 and tried to start OC4j but i am getting the below error: Can someone help me in solving this error.
    2009-11-05 13:32:57.045 ERROR ServerFile[PersistentMap,/C:/oracle/bise1/bi/oc4j_
    bi/j2ee/home/persistence/jms.state]: persistence file could not be locked. Reso
    lve the sharing violation by ending the process currently holding the file lock
    or by using a different persistence directory for one or both processes.
    09/11/05 13:32:57 *** (SEVERE) ServerFile[PersistentMap,/C:/oracle/bise1/bi/oc4j
    _bi/j2ee/home/persistence/jms.state]: persistence file could not be locked.  Res
    olve the sharing violation by ending the process currently holding the file lock
    or by using a different persistence directory for one or both processes.
    2009-11-05 13:32:57.107 ERROR Failed to set the internal configuration of the OC
    4J JMS Server with: XMLJMSServerConfig[file:/C:/oracle/bise1/bi/oc4j_bi/j2ee/hom
    e/config/jms.xml]
    09/11/05 13:32:57 *** (SEVERE) Failed to set the internal configuration of the O
    C4J JMS Server with: XMLJMSServerConfig[file:/C:/oracle/bise1/bi/oc4j_bi/j2ee/ho
    me/config/jms.xml]
    2009-11-05 13:32:57.123 ERROR J2EE OJR-00011 Exception starting JMS server: Fail
    ed to set the internal configuration of the OC4J JMS Server with: XMLJMSServerCo
    nfig[file:/C:/oracle/bise1/bi/oc4j_bi/j2ee/home/config/jms.xml]
    2009-11-05 13:32:57.717 ERROR J2EE RMI-00002 Error starting ORMI server padamsv port 23,791: Address already in use: JVM_Bind
    2009-11-05 13:32:57.717 ERROR java.net.BindException: Address already in use: JV
    M_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
    at java.net.ServerSocket.bind(ServerSocket.java:319)
    at java.net.ServerSocket.<init>(ServerSocket.java:185)
    at com.evermind.server.rmi.RMIServer.createServerSocket(RMIServer.java:4
    33)
    at com.evermind.server.rmi.RMIServer.createNonSecureSocket(RMIServer.jav
    a:347)
    at com.evermind.server.rmi.RMIServer.setConfig(RMIServer.java:210)
    at com.evermind.server.ApplicationServer.initializeRMI(ApplicationServer
    .java:2378)
    at com.evermind.server.ApplicationServer.setConfig(ApplicationServer.jav
    a:966)
    at com.evermind.server.ApplicationServerLauncher.run(ApplicationServerLa
    uncher.java:131)
    at java.lang.Thread.run(Thread.java:595)
    09/11/05 13:32:57 Error starting ORMI server padamsv port 23,791: Addres
    s already in use: JVM_Bind
    09/11/05 13:32:57 Shutting down OC4J...

    Thank you. Its working now after i have gone thru the thread Regarding OC4j and tried the options.

  • Regarding Dashboard

    Hi,
    I have installed BI 10.1.3.4. but when i start OC4j server i got following error .
    D:\OracleBI\oc4j_bi\bin>oc4j -start
    Starting OC4J from D:\OracleBI\oc4j_bi\j2ee\home ...
    2009-08-06 13:28:20.558 ERROR ServerFile[PersistentMap,/D:/OracleBI/oc4j_bi/j2ee/home/persistence/jms.state]: persistence file could not be locked. Resolve the sharing violation by ending the process
    currently holding the file lock or by using a different persistence directory for one or both processes.
    09/08/06 13:28:20 *** (SEVERE) ServerFile[PersistentMap,/D:/OracleBI/oc4j_bi/j2ee/home/persistence/jms.state]: persistence file could not be locked. Resolve the sharing violation by ending the proces
    s currently holding the file lock or by using a different persistence directory for one or both processes.
    2009-08-06 13:28:20.730 ERROR Failed to set the internal configuration of the OC4J JMS Server with: XMLJMSServerConfig[file:/D:/OracleBI/oc4j_bi/j2ee/home/config/jms.xml]
    09/08/06 13:28:20 *** (SEVERE) Failed to set the internal configuration of the OC4J JMS Server with: XMLJMSServerConfig[file:/D:/OracleBI/oc4j_bi/j2ee/home/config/jms.xml]
    2009-08-06 13:28:20.730 ERROR J2EE OJR-00011 Exception starting JMS server: Failed to set the internal configuration of the OC4J JMS Server with: XMLJMSServerConfig[file:/D:/OracleBI/oc4j_bi/j2ee/home
    /config/jms.xml]
    2009-08-06 13:28:20.932 ERROR J2EE RMI-00002 Error starting ORMI server naynachavda1559 port 23,791: Address already in use: JVM_Bind
    2009-08-06 13:28:20.932 ERROR java.net.BindException: Address already in use: JVM_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
    at java.net.ServerSocket.bind(ServerSocket.java:319)
    at java.net.ServerSocket.<init>(ServerSocket.java:185)
    at com.evermind.server.rmi.RMIServer.createServerSocket(RMIServer.java:433)
    at com.evermind.server.rmi.RMIServer.createNonSecureSocket(RMIServer.java:347)
    at com.evermind.server.rmi.RMIServer.setConfig(RMIServer.java:210)
    at com.evermind.server.ApplicationServer.initializeRMI(ApplicationServer.java:2378)
    at com.evermind.server.ApplicationServer.setConfig(ApplicationServer.java:966)
    at com.evermind.server.ApplicationServerLauncher.run(ApplicationServerLauncher.java:131)
    at java.lang.Thread.run(Thread.java:595)
    09/08/06 13:28:20 Error starting ORMI server naynachavda1559 port 23,791: Address already in use: JVM_Bind
    09/08/06 13:28:20 Shutting down OC4J...
    How to resolve it.

    <sarcasm>
    Perhaps if you ask the question again and again in multiple threads you'll get a better answer
    </sarcasm>
    you posted about this earlier: Regarding OC4j
    so why not continue that thread rather than cluttering up the forum with duplicate posts.

  • PDF printing by Apache FOP : what are the prerequisites ?

    Hello,
    I'm actually looking for a way to print reports, and I've 2 questions :
    1) If I'm not wrong there are three means : BI Publisher, Apache FOP and an other XSL-FO like Cocoon...
    -> For budgetary reasons, we can't use BI Publisher.
    -> Besides, my company owns the Oracle Standard Edition, so I'm not even sure we can use Apache FOP : in every documentation FOP is deployed in App Server or Enterprise Manager, and we don't have those. OC4J seems installed on our server but it may not work without Application Server...
    -> So is Cocoon the solution ?
    2) We're about installing Apex 4.0. We want to be able to print interactive reports, with aggregations and sums. Does it possible and are there differences between report engines ?
    Thanks a lot !
    Fanny

    Hi Fanny,
    I stand to be corrected, but my understanding regarding OC4J licensing is this.
    OC4J can be downloaded and installed in standalone configuration from OTN under the OTN license, which is fairly restrictive and means that it cannot be used for production or commercial purposes. This applies whether it is installed on the database server or on a separate server. In order to license it you need to buy an OAS or Weblogic license. This is in contrast to Oracle's HTTP server, which can be installed standalone and is included in the database server license provided it is installed on the same server as the database. If the HTTP server is installed on a separate server to the database then it too requires an OAS or Weblogic license.
    My guess for this anomally is that the HTTP server is based on Apache, an open source product and it was originally installed as part of the database up until version 9i. After that it was separated out as a companion product. Where as OC4J is based on a proprietary product called Onion, which Oracle acquired. Commercially going forward, Oracle is pushing Weblogic. If you want a free app server then you can opt for the free version of Glassfish, an Oracle product or Tomcat.
    If you do need a supported environment you can also get Standard One versions of Weblogic and OAS which are considerably cheaper than the Enterprise versions and you can get a supported version of Glasfish for around the same cost.
    You should also note that Oracle BI plus OAS or Weblogic is a complete development and deployment product for business intelligence reporting, whereas Apache FOP and an app server is purely a deployment environment. If you wish to do something more sophisticated than the standard PDF option available in Apex, which is pretty basic, you will need to acquire some sort of XSL-FO production tool. As alluded to previously, Java4less produce a minimally priced one, but there are others in the market place.
    Regards
    Andre

  • HTTP Server High Availability

    Hello All.
    I have a question regarding OC4J and HTTP server High Availability.
    I want to do something like the Figure 3-1 of the Oracle Application Server High Availability Guide 10.1.2. See this link
    http://download-east.oracle.com/docs/cd/B14099_11/core.1012/b14003/midtierdesc.htm#CIHCEDFC
    What I have now is the following:
    Three hosts
    Two of them are an OAS 10.1.2 which we already configured the Cluster and deployed our applications (used this tutorial: http://www.oracle.com/technology/obe/obe_as_1012/j2ee/deploy/j2eecluster/farmcluster.htm)
    Let's say this nodes are:
    - host1
    - host2
    The other one is the Oracle WebCache stand alone (will act as Load Balancer). We will call this
    - hostwc3
    We already configured the WebCache as Load Balancer and is working just fine. We also configured the session replication successful and work great with our applications.
    What we have not clear is the following:
    When a client try to visit http://hostwc3/application/ the LOAD BALANCER routes him to, let's say http://host1/application/ and in the browser's URL will not show the Virtual Server anymore (the webcache server) and will show the actual real Apache address (host1 )that is attending him. IF we "kill" on ENTIRE host1 (apache, oc4j, etc..) the clients WILL perceive the down and if they try to press F5, the will try to access to an Apache that doesn't is up and running.... The behavior expected is that the browser NEVER shows the actual Apache URL, so, when some apache goes down, the client do not disconnect (as it happens with and OC4J downfall ) and always works with the "virtual web server".
    I came up with some ideas but I want you Guys to give me an advice:
    - In Web Cache, do not route for load balancing to Apache, and route the Oc4J directly (Is this possible?)
    - Configure a HTTP Server Cluster, this means that we have to have a "Virtual Name"to the Apaches (two of them). Is this possible? how?
    - Use the rewrite mode of the Apache. Is this a good idea?
    - Any other idea how to fix the Apache "Single Point Of Failure" ?
    According with the figure 3-1 ( Link above ) we do can have HTTP Server in a cluster. But I have no idea how to manage it or configure it.
    Thanks in advance any help!

    You cannot point Outlook Anywhere to your DAG cluster IP address. It must be pointed to the actual IP address of either server.
    For no extra cost DNS round robin is the best you will get, but it does have some drawbacks as it may give the IP address of a server you have taken down for maintenance or the server has an issue.
    You could look to implement a load balancer but again if you are doing this for high availability then you want more than one load balancer in the cluster - otherwise you've just moved your single point of failure.
    Having your existing NAT and just remembering to update it to point to the other server during maintenance may suit your needs for now.
    If you can go into more detail about what the high availability your business is looking to achieve and the budget we can suggest the best method to meet those needs for the price point.
    Have a great day
    Oliver
    Oliver Moazzezi | Exchange MVP, MCSA:M, MCITP:Exchange 2010,Exchange 2013, BA (Hons) Anim | http://www.exchange2010.com | http://www.cobweb.com | http://twitter.com/OliverMoazzezi

  • Deployment username and password for LDAP & Jdeveloper 9i

    Ok -- I finally got 9iAS R2 up and running and now I'm trying to connect with JDeveloper 9i. By default, my installation changed the JAZN security provider to LDAP (from what I see).
    The first problem was/is that the client didn't connect using the default port (23791) and using nmap I figured out that it's not listening on 23791, so I tried 3101 as per the docs regarding OC4J RMI ports. So, I fixed the port used in the JDeveloper 9i using ormi:/host:3101.
    One of the strange things is that in j2ee/home/config/rmi.xml, the port is still 23791...
    I have tried the following user names (with their correct passwords), with no success:
    cn=orcladmin
    orcladmin
    ias_admin
    I also tried the user admin, but got nowhere.
    So, what I don't know at this point is whether I've got the port wrong or the user name (and password?) wrong. I have logged into EM using ias_admin and the password and I have logged into oidadmin with the cn=orcladmin password, so I believe I'm Ok with the passwords, but I am not sure about the port or user name setup for deploying via RMI.
    Can anyone provide assistance?
    Thanks,
    Jeff

    Try the following things:
    1. Make sure the iAS instance you are trying to deploy to
    is really up.
    If not, bring it up manually. and make sure to:
    use the right set of configuration file.
    for example, j2ee/home/config/*.xml. Check if the rmi listener
    is listening at the port #. 23791 or you specified elsewise.
    2. use the connection string: ormi://hostname:port
    and user/passwd specified (look at the principle.xml
    to find out, admin/welcome, remember to check if the
    disable lable is set to no.)
    3. Deploy your apps to that connection.

  • IO Error while deploying application client jar file ???????

    Hi,
    In my .ear file, one application-client jar(which contains all helper classes which are used in whole application) file is there. While deploying .ear file, all ejb are getting deployed well, while deploying application client jar file(Global.jar file here) it is giving the following message:
    IO Error deploying Global.jar: D:\oracle9ias\oc4j_extended\j2ee\home\applications\trainiumear\Global.jar
    Here is application-client.xml of Global.jar file:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com/j2ee/dtds/application-client_1_2.dtd'>
    <application-client>
    <display-name>TrainiumClientApp</display-name>
    <description>Application description</description>
    </application-client>
    My Environment: Oracle9iAS (9.0.3.0.0), Windows-NT
    Please let me know Why i am getting 'IO Error' , where i may done wrong ?
    Thanks in Advance
    Srinivas

    Srinivas,
    Before we continue, PLEASE tell me if you've looked through the available
    documentation, code samples, "how-to" documents, etc., for OC4J. It
    seems to me that you're mixing things up a bit. I use the "deploy"
    command to deploy my EARs, example (partial):
    java -jar admin.jar ormi://<host> admin <password> -deploy ...
    And my EAR file is not in the "application-deployments" directory
    when I issue that command.
    Perhaps you could also show me the contents of your "application.xml"
    file for this application you are having trouble with.
    But I repeat, please tell me if you have already looked at the
    available documents regarding OC4J!
    Thanks,
    Avi.

  • Regarding Testing Web service in oc4j

    Hi all,
    I have this webservice PublicBRMfetchInvoiceXMLService, which i have deployed as .war file in oc4j and which was successful. But while testing the webservice it give error like..
    Caught exception while handling request: Caught exception while handling request: java.lang.UnsatisfiedLinkError: no portal in java.library.path
    I have set the Classpath where the pcm.jar is located. could not figure out what went missing. Any idea on this error.
    Regards
    Anirban.

    Hi Anirban,
    Did you resolve this error. I am doing exactly the same and getting the same error.
    Could you tell me how you resolve this one.
    Write me an email to [email protected]
    Thank you very much for your precious time.
    Best Regards,
    Rohit
    +91-966-55-27-444

  • Error while invoking a Web service deployed on OC4J from Oracle BPEL

    Hi,
    I had created a web service from a simple java class using JDeveloper and deployed that on OC4J which had emmited a wsdl for the web service. On the same AS my BPEL processing is deployed in which i had created a partner link by using 1st option (i.e Browse WSDL files from local file system) and invoking the published method of the java class.I am expecting that the method of the class which is deployed as web service will be executed and i will get the return of the method as the response of the invoke activity , but i am getting this error :
    <remoteFault xmlns="http://schemas.oracle.com/bpel/extension">
    <part name="summary">
    <summary>when invoking locally the endpoint 'http://localhost:8080/MyIM-JavaCustomerFactory-context-root/JavaCustFactory', ; nested exception is: ORABPEL-02052 Cannot lookup BPEL domain. The BPEL domain "JavaCustFactory" cannot be found; the domain may not have initialized properly. Please verify that the BPEL domain loader has a valid set of initialization properties in the application properties file.</summary>
    </part>
    <part name="detail">
    <detail>ORABPEL-02052 Cannot lookup BPEL domain. The BPEL domain "JavaCustFactory" cannot be found; the domain may not have initialized properly. Please verify that the BPEL domain loader has a valid set of initialization properties in the application properties file.</detail>
    </part>
    </remoteFault>
    It seems that the Invoke activity is not able to get the WebService and it is asking for some settings , if any clue regarding this pls reply.
    I can also give the wsdl also.
    mail me at [email protected]

    Hi,
    Thanx it is working now.
    BTW can you give me some urls with info of this kind of setting which i need to do for other kind of integarions in J2EE platform.Sorry if i am asking too much as i am a starter in this technology.

  • OC4J: marshalling does not recreate the same data structure onthe client

    Hi guys,
    I am trying to use OC4J as an EJB container and have come across the following problem, which looks like a bug.
    I have a value object method that returns an instance of ArrayList with references to other value objects of the same class. The value objects have references to other value objects. When this structure is marshalled across the network, we expect it to be recreated as is but that does not happen and instead objects get duplicated.
    Suppose we have 2 value objects: ValueObject1 and ValueObject2. ValueObject1 references ValueObject2 via its private field and the ValueObject2 references ValueObject1. Both value objects are returned by our method in an ArrayList structure. Here is how it will look like (number after @ represents an address in memory):
    Object[0] = com.cramer.test.SomeVO@1
    Object[0].getValueObject[0] = com.cramer.test.SomeVO@2
    Object[1] = com.cramer.test.SomeVO@2
    Object[1].getValueObject[0] = com.cramer.test.SomeVO@1
    We would expect to see the same (except exact addresses) after marshalling. Here is what we get instead:
    Object[0] = com.cramer.test.SomeVO@1
    Object[0].getValueObject[0] = com.cramer.test.SomeVO@2
    Object[1] = com.cramer.test.SomeVO@3
    Object[1].getValueObject[0] = com.cramer.test.SomeVO@4
    It can be seen that objects get unnecessarily duplicated – the instance of the ValueObject1 referenced by the ValueObject2 is not the same now as the instance that is referenced by the ArrayList instance.
    This does not only break referential integrity, structure and consistency of the data but dramatically increases the amount of information sent across the network. The problem was discovered when we found that a relatively small but complicated structure that gets serialized into a 142kb file requires about 20Mb of network communication. All this extra info is duplicated object instances.
    I have created a small test case to demonstrate the problem and let you reproduce it.
    Here is RMITestBean.java:
    package com.cramer.test;
    import javax.ejb.EJBObject;
    import java.util.*;
    public interface RMITestBean extends EJBObject
    public ArrayList getSomeData(int testSize) throws java.rmi.RemoteException;
    public byte[] getSomeDataInBytes(int testSize) throws java.rmi.RemoteException;
    Here is RMITestBeanBean.java:
    package com.cramer.test;
    import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;
    import java.util.*;
    public class RMITestBeanBean implements SessionBean
    private SessionContext context;
    SomeVO someVO;
    public void ejbCreate()
    someVO = new SomeVO(0);
    public void ejbActivate()
    public void ejbPassivate()
    public void ejbRemove()
    public void setSessionContext(SessionContext ctx)
    this.context = ctx;
    public byte[] getSomeDataInBytes(int testSize)
    ArrayList someData = getSomeData(testSize);
    try {
    java.io.ByteArrayOutputStream byteOutputStream = new java.io.ByteArrayOutputStream();
    java.io.ObjectOutputStream objectOutputStream = new java.io.ObjectOutputStream(byteOutputStream);
    objectOutputStream.writeObject(someData);
    objectOutputStream.flush();
    System.out.println(" serialised output size: "+byteOutputStream.size());
    byte[] bytes = byteOutputStream.toByteArray();
    objectOutputStream.close();
    byteOutputStream.close();
    return bytes;
    } catch (Exception e) {
    System.out.println("Serialisation failed: "+e.getMessage());
    return null;
    public ArrayList getSomeData(int testSize)
    // Create array of objects
    ArrayList someData = new ArrayList();
    for (int i=0; i<testSize; i++)
    someData.add(new SomeVO(i));
    // Interlink all the objects
    for (int i=0; i<someData.size()-1; i++)
    for (int j=i+1; j<someData.size(); j++)
    ((SomeVO)someData.get(i)).addValueObject((SomeVO)someData.get(j));
    ((SomeVO)someData.get(j)).addValueObject((SomeVO)someData.get(i));
    // print out the data structure
    System.out.println("Data:");
    for (int i = 0; i<someData.size(); i++)
    SomeVO tmp = (SomeVO)someData.get(i);
    System.out.println("Object["+Integer.toString(i)+"] = "+tmp);
    System.out.println("Object["+Integer.toString(i)+"]'s some number = "+tmp.getSomeNumber());
    for (int j = 0; j<tmp.getValueObjectCount(); j++)
    SomeVO tmp2 = tmp.getValueObject(j);
    System.out.println(" getValueObject["+Integer.toString(j)+"] = "+tmp2);
    System.out.println(" getValueObject["+Integer.toString(j)+"]'s some number = "+tmp2.getSomeNumber());
    // Check the serialised size of the structure
    try {
    java.io.ByteArrayOutputStream byteOutputStream = new java.io.ByteArrayOutputStream();
    java.io.ObjectOutputStream objectOutputStream = new java.io.ObjectOutputStream(byteOutputStream);
    objectOutputStream.writeObject(someData);
    objectOutputStream.flush();
    System.out.println("Serialised output size: "+byteOutputStream.size());
    objectOutputStream.close();
    byteOutputStream.close();
    } catch (Exception e) {
    System.out.println("Serialisation failed: "+e.getMessage());
    return someData;
    Here is RMITestBeanHome:
    package com.cramer.test;
    import javax.ejb.EJBHome;
    import java.rmi.RemoteException;
    import javax.ejb.CreateException;
    public interface RMITestBeanHome extends EJBHome
    RMITestBean create() throws RemoteException, CreateException;
    Here is ejb-jar.xml:
    <?xml version = '1.0' encoding = 'windows-1252'?>
    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
    <ejb-jar>
    <enterprise-beans>
    <session>
    <description>Session Bean ( Stateful )</description>
    <display-name>RMITestBean</display-name>
    <ejb-name>RMITestBean</ejb-name>
    <home>com.cramer.test.RMITestBeanHome</home>
    <remote>com.cramer.test.RMITestBean</remote>
    <ejb-class>com.cramer.test.RMITestBeanBean</ejb-class>
    <session-type>Stateful</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    </ejb-jar>
    And finally the application that tests the bean:
    package com.cramer.test;
    import java.util.*;
    import javax.rmi.*;
    import javax.naming.*;
    public class RMITestApplication
    final static boolean HARDCODE_SERIALISATION = false;
    final static int TEST_SIZE = 2;
    public static void main(String[] args)
    Hashtable props = new Hashtable();
    props.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
    props.put(Context.PROVIDER_URL, "ormi://lil8m:23792/alexei");
    props.put(Context.SECURITY_PRINCIPAL, "admin");
    props.put(Context.SECURITY_CREDENTIALS, "admin");
    try {
    // Get the JNDI initial context
    InitialContext ctx = new InitialContext(props);
    NamingEnumeration list = ctx.list("comp/env/ejb");
    // Get a reference to the Home Object which we use to create the EJB Object
    Object objJNDI = ctx.lookup("comp/env/ejb/RMITestBean");
    // Now cast it to an InventoryHome object
    RMITestBeanHome testBeanHome = (RMITestBeanHome)PortableRemoteObject.narrow(objJNDI,RMITestBeanHome.class);
    // Create the Inventory remote interface
    RMITestBean testBean = testBeanHome.create();
    ArrayList someData = null;
    if (!HARDCODE_SERIALISATION)
    // ############################### Alternative 1 ##############################
    // ## This relies on marshalling serialisation ##
    someData = testBean.getSomeData(TEST_SIZE);
    // ############################ End of Alternative 1 ##########################
    } else
    // ############################### Alternative 2 ##############################
    // ## This gets a serialised byte stream and de-serialises it ##
    byte[] bytes = testBean.getSomeDataInBytes(TEST_SIZE);
    try {
    java.io.ByteArrayInputStream byteInputStream = new java.io.ByteArrayInputStream(bytes);
    java.io.ObjectInputStream objectInputStream = new java.io.ObjectInputStream(byteInputStream);
    someData = (ArrayList)objectInputStream.readObject();
    objectInputStream.close();
    byteInputStream.close();
    } catch (Exception e) {
    System.out.println("Serialisation failed: "+e.getMessage());
    // ############################ End of Alternative 2 ##########################
    // Print out the data structure
    System.out.println("Data:");
    for (int i = 0; i<someData.size(); i++)
    SomeVO tmp = (SomeVO)someData.get(i);
    System.out.println("Object["+Integer.toString(i)+"] = "+tmp);
    System.out.println("Object["+Integer.toString(i)+"]'s some number = "+tmp.getSomeNumber());
    for (int j = 0; j<tmp.getValueObjectCount(); j++)
    SomeVO tmp2 = tmp.getValueObject(j);
    System.out.println(" getValueObject["+Integer.toString(j)+"] = "+tmp2);
    System.out.println(" getValueObject["+Integer.toString(j)+"]'s some number = "+tmp2.getSomeNumber());
    // Print out the size of the serialised structure
    try {
    java.io.ByteArrayOutputStream byteOutputStream = new java.io.ByteArrayOutputStream();
    java.io.ObjectOutputStream objectOutputStream = new java.io.ObjectOutputStream(byteOutputStream);
    objectOutputStream.writeObject(someData);
    objectOutputStream.flush();
    System.out.println("Serialised output size: "+byteOutputStream.size());
    objectOutputStream.close();
    byteOutputStream.close();
    } catch (Exception e) {
    System.out.println("Serialisation failed: "+e.getMessage());
    catch(Exception ex){
    ex.printStackTrace(System.out);
    The parameters you might be interested in playing with are HARDCODE_SERIALISATION and TEST_SIZE defined at the beginning of RMITestApplication.java. The HARDCODE_SERIALISATION is a flag that specifies whether Java serialisation should be used to pass the data across or we should rely on OC4J marshalling. TEST_SIZE defines the size of the object graph and the ArrayList structure. The bigger this size is the more dramatic effect you get from data duplication.
    The test case outputs the structure both on the server and on the client and prints out the size of the serialised structure. That gives us sufficient comparison, as both structure and its size should be the same on the client and on the server.
    The test case also demonstrates that the problem is specific to OC4J. The standard Java serialisation does not suffer the same flaw. However using the standard serialisation the way I did in the test case code is generally unacceptable as it breaks the transparency benefit and complicates interfaces.
    To run the test case:
    1) Modify provider URL parameter value on line 15 of the RMITestApplication.java for your environment.
    2) Deploy the bean to the server.
    4) Run RMITestApplication on a client PC.
    5) Compare the outputs on the server and on the client.
    I hope someone can reproduce the problem and give their opinion, and possibly point to the solution if there is one at the moment.
    Cheers,
    Alexei

    Hi,
    Eugene, wrong end user recovery.  Alexey is referring to client desktop end user recovery which is entirely different.
    Alexy - As noted in the previous post:
    http://social.technet.microsoft.com/Forums/en-US/bc67c597-4379-4a8d-a5e0-cd4b26c85d91/dpm-2012-still-requires-put-end-users-into-local-admin-groups-for-the-purpose-of-end-user-data?forum=dataprotectionmanager
    Each recovery point has users permisions tied to it, so it's not possible to retroacively give the users permissions.  Implement the below and going forward all users can restore their own files.
    This is a hands off solution to allow all users that use a machine to be able to restore their own files.
     1) Make these two cmd files and save them in c:\temp
     2) Using windows scheduler – schedule addperms.cmd to run daily – any new users that log onto the machine will automatically be able to restore their own files.
    <addperms.cmd>
     Cmd.exe /v /c c:\temp\addreg.cmd
    <addreg.cmd>
     set users=
     echo Windows Registry Editor Version 5.00>c:\temp\perms.reg
     echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Agent\ClientProtection]>>c:\temp\perms.reg
     FOR /F "Tokens=*" %%n IN ('dir c:\users\*. /b') do set users=!users!%Userdomain%\\%%n,
     echo "ClientOwners"=^"%users%%Userdomain%\\bogususer^">>c:\temp\perms.reg
     REG IMPORT c:\temp\perms.reg
     Del c:\temp\perms.reg
    Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT]
    This posting is provided "AS IS" with no warranties, and confers no rights.

  • How to deploy an ADF RC application to any OC4J that running on Linux?

    I developed an application with the latest Jdev 11gTP3. The team has a linux server that I want to install an OC4J and deploy my application.
    I tried the following:
    1. OC4J standalone 11g. Followed the installation instruction, with the command:
    $ORACLE_HOME/bin/oc4j -start
    I can initiate a server connection from Jdev, even passed test. But when deployment failed, I even tried to install ADF runtime library by following an Oracle official document. However, I can't get it work.
    2. I tried to start the Jdev embedded OC4J with command:
    java -jar oc4j.jar
    I believe something has to be set before the application can work on this OC4J
    Has anyone ever made it? Can you please share the steps of accomplishing it?
    Many thanks in advance.

    Thanks Frank for your reply
    This can not be done with TP1 OC4J even with proper configuration and amendment?
    How about WebSphere and Weblogic servers?
    So at this stage, a TP3 ADF application could only run on JDev Embedded OC4J?
    Regards,
    William

Maybe you are looking for

  • IPad mini 2 will no longer sync photos from OSX 10.9.5

    Although I still have 8GB memory left on my iPad mini which is one year old, suddenly I can no longer upload photos via iTunes on my Mac OSX 10.9.5 to the iPad mini.  When I press the sync button, it looks like it is doing it.  'Finished sync' appear

  • Send Stock & Sales Idoc to Vendors

    Hi There, I need to send an Idoc to Vendor in order to report Stock and Sales, I have found the following transaction: transaction WVM2 - Transfer Stock and Sales Data This transaction generates Idoc per plant (PROACT01), the problem that I have is t

  • Create folder In OS drive (Urgent)

    Hi all, I want to create folder in local drive with sysdate by using sql or pl/sql . I used "create or replace directory chin as 'c:\' ;" Directory is creating but it is not showing 'chin' in C Drive . Can u please help on this . Thanks in advance .

  • Use time capsule for iTunes library

    I would like to use my new time capsule as the location for my iTunes library. How do I go about doing that? Currently my iTunes library is on my MacBook Pro.

  • T510 w/ NVS 3100m - hard crash

    The problem first arose when I tried to play Civ V.  I would get to the game menu and then my computer would simply shut itself off after a few seconds.  I thought it was the game until I had the same thing happen from the NVIDIA control panel.  Sure