Distributed Trx in diferents JVM

Hi,
I would like to know if is possible this situation:
My application RMI client:
1- get the XAResource xaR1
2- create Xid1
3- xaR1.start(Xid1)
4-doAnyThingDB1("insert into table_Client ...")
5- xaR1.end(Xid1)
6- call the method of app Server RMI passing the Xid
and the appSever RMI:
1- get the XAResource xaR1 (same the appClient)
2- create Xid2
3- xaR1.start(Xid2)
4-doAnyThingDB2("insert into table_Server ...")
5- xaR1.end(Xid2)
6- prepare(Xid2)
7- commit(Xid2)
After the conclution of method remote, There will register in the table_Server and table_Client or only on table_Server ?
I need that the fisrt result is the correct, else what I can do to control transaction distributes in diferent VMs.
thanks

You could configure cache coordination (synchronization) in this scenario, it should be mainly the same as configuring it between servers. However you may wish to reexamine why you need an XA versus non -XA session. You may be able to accomplish the same requirement using a single server session and configuring two different connection pools.

Similar Messages

  • Using an object in distributed env

    Hi,
    We developed an IMAP based application in single server JBOSS env. we are using a hashmap to store some information which shall be used by all the users of the application.
    Now we have to convert the application to distributed JBOSS (on different jvm's), please tell me what is the best approach to access the above hashmap from two JBOSS instances.
    Thanks

    If you doType name1 = new Type(true);
    Type name2 = new Type(false);
    and1 = new LogicAnd(name1, name2);Your object references will look like this:           ---------
               |  -----|
    name1 -----+->|true ||
               |  -----|
               |         |
               |  -----|
    name2 -----+->|false||
               |  -----|
    and1 ----->|         |
               ---------Now if you'd assign a new value to "name2", by doingname2 = new Type(true);Your object references will now look like this:           ---------
               |  -----|
    name1 -----+->|true ||
               |  -----|
               |         |
               |  -----|
               |  |false||
               |  -----|
    and1 ----->|         |
    name2 ------->|true |
                  -----Note that the old false Type will still be in "and1", and that "name2" will just get a new instantce of a Type object assigned to it.

  • Using Jvm.dll

    When an JNI application uses the JVM.dll, does it have to be distributed with any other JVM files or just the JVM.dll file?

    Just a slight amplification here:
    1. As the last poster said, you will find yourself in difficulties if you try to use the jvm.dll, and it is not imbedded in a standard jvm hierarchy of directories.
    2. Not clear anyone has ever been punished for violation, but Sun license covers what must be distributed as a whole (i.e. what must be distributed together.)
    3. "Installation" is a fuzzy concept. We distribute JVMs and copy them into base directories of our choice. We manage our own paths, especially classpaths. Consequently, outr applications do nothing to CLASSPATH variables, and neither use nor intefere with other installed jres.

  • Using java.util.logging Properly

    Hello,
    I have implemented java.util.logging in my application by creating a kind of "wrapper" class that I call for handling logging. It doesn't extend the logging classes, it just provides an object with helper methods that I can call when I want it.
    public class LogCleanerLogger {
        private static final String cleanerLogfile = "logcleanerlog%g.txt";
        private static final String loggerName = "LogCleaner";
        private Logger cleanerLogger = null;
        public LogCleanerLogger() throws IOException{
            this.cleanerLogger = Logger.getLogger(getLoggerName());
            cleanerLogger.setUseParentHandlers(false);
            FileHandler logFile = new FileHandler(getCleanerLogfile(),10000,1, true);
            logFile.setFormatter(new SimpleFormatter());
            cleanerLogger.addHandler(logFile);
        public void writeLogInfoMessage(String message){
            cleanerLogger.info(message);
        public void writeLogWarningMessage(String message){
            cleanerLogger.warning(message);
        public void writeLogErrorMessage(String message){
            cleanerLogger.severe(message);
    // getters and setters
    } // end class    This all works quite happily and I can log any information I want. Except for one thing -- my log directory ends up with the log file (logcleanerlog0.txt) and a list of what appear to be temporary logs, e.g. logcleanerlog0.txt.1, logcleanerlog0.txt.2, and so on. Each increment of the number corresponds to a log file that has progressively less information in it that the previous one. At the top level, the unnumbered log, logcleanerlog0.txt, has all the logged information in it.
    I cannot make out, from reading the API and other documentation, how I can get rid of these other files, which appear to me to be temporary files used in the construction of the top level file.
    Can someone help me by explaining the mechanism for generating these files and either (a) how I can get rid of them altogether or (b) how I can arrange for them to be generated in a temp dir, while keeping the main log in the present directory (application root).
    Or perhaps there is a "better way" (that is equally as easy, of course ;-).
    Thanks.
    mp

    are you sure you cannot use the classes from a newer
    version. You can put those classes in your own
    directory. If there ar some other classes that need to
    be from the newer version, you can include them, also
    in your project. It is important that your project
    directory to be placed in the classpath variable
    before the jdk jars.
    (this solution might not work)I doubt that is worth trying.
    First, although it probably does not apply in this case, you are not allowed to distribute part of a JVM. So you could never use this solution in a commercial application.
    Secondly the Java API does change. And every execution path that might use the changed code would have to be tested. That is going to take a lot of work. Keep in mind that the logging api uses java.lang.String and java.lang.String definitely changed in 1.4 and almost every class in the Java API uses it.

  • Accessing Application Scope from an EJB

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

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

  • RMI and RowSet

    I'm trying to write an app that access a database using Swing (not in the internet) and RMI.
    I'm not using J2EE (and doesn't want to, just J2SE).
    But the ResultSet can't be serialized, so I wish to use the RowSet
    I made 3 software layers which runs in diferents JVM so the database is accessed through a single class.
    I'm trying to use a single connection to access the database so the other classes get a statement using the createStatement method of a single Connection Class, but, the statement returns a ResultSet and I need a RowSet.
    I thought that I could cast RowSet to the ResultSet but it doesn't compile.
    Any Ideas?

    I use JBuilder, which has the class DataSetData intended for sending data via RMI. But it is necessary to use some another classes from JBuilder's libraries, DataSet in particular.

  • Lock scope

    I am playing around with the evaluation version and just getting my feet wet, so please bear with this novice question:
    what exactly is the scope of the lock/unlock? I started two JVMs (JVM 1 and JVM 2), each using the default-replicated scheme in the example that comes with the eval download. I put a key in JVM 1, lock the key in JVM 1, try to update the key value in JVM 2 and the update hangs, since the key is locked, when the key is unlocked in JVM 1, I can update the key value in JVM 2. This is all good, this is what I expected from lock/unlock.
    When I change the schme to default-distributed, the lock in JVM 1 seems to have no effect. I can update the key value in JVM 2, even if JVM 1 successfully obtained a lock on the key. Do I need to do anything extra to obtain the same lock behaviour as above for default-distributed?
    Thanks
    G. Patel

    Hi patelg,
    In fact your question is not a novice one at all :).
    You are correct the relationship between lock and put depends on the concrete cache topology and should be more explicitly documented. (I have entered a JIRA issue on this.)
    The guaranteed semantic of a lock is such that 'lock' prevents a successful 'lock' by any other thread. If a thread locks a key then no other thread will be able to obtain a lock on that same key until this locking thread releases the lock by calling unlock or the JVM in which the locking thread lives terminates.
    The put or remove may or may not succeed depending on the concrete cache implementation. Therefore, to ensure concurrency across the cluster and across caching implementations you should use something like the following pattern:
    if (cache.lock(oKey))
      try
        // processing
      finally
        cache.unlock(oKey);
      }Hope this helps.
    Later,
    Rob Misek
    Tangosol, Inc.

  • Jsp as alternative for jni

    Hello,
    i have a few general questions about jsp and how i could use it
    * are servlets more like applets/real java programs wich can import any java class and do everything that one could do in a normal java program or is it more like asp (scripting) where programming is much more limited than eg. a c++ program ?
    * my problem: i'm working in a pure C++ environment, but i need to acces a certain java libraries (to compose MMS messages).
    - Tried jni, works, but not very handy nor elegant.
    - tcp/ip between c++ and java program is good if only 1 connection is used, but with more c++ programs it will become quite complex maintaing connections, threads, ....
    So my idea: Maybe put java program in an java servlet and let c++ programs interface via HTTP request/respons => good sollution ?
    * does it work with Windows IIS ?
    * the java servlet will be reading a few files, can that cause timeout problems on the http request in the c++ program ?
    Appreciate all responses,
    Pieter.

    We had a similar situation and solved it this way:
    We abstracted the logic of the interaction between the JVM and the C++ library into a java class (say, Foo.java), to provide a single point of interface between the native library and any java classes that wished to use it. This class has no native methods, but uses RMI to connect to another class (Bar.java) in another JVM which handles all the JNI stuff. This provided the following advantages:
    Clients just access the Foo class and call its methods to get what they want. All details of JNI and RMI are hidden.
    Access to the resources of the C++ library can be made available in a distributed fashion to any JVM on the network using a single instance of the library.
    Clients are protected from potential bugs in the unknown C++ codebase. Running JNI in the same JVM as your servlet engine can bring down your web site if there is a problem in the native library. For example, in our instance we had no control over the C++ code, and if there was a problem with the required license, the library would simply call exit()!!! Not good - using RMI allowed us to handle errors more gracefully.

  • How the JVM SHOULD be distributed (interesting)

    Well I sent this document to the JCP maybe it will be better off there....
    Sun needs a new JAVA marketing strategy.
    Opinions expressed here are of my own, Matt Prokes, remember these are only opinions about what should or could be.
    If you have ?'s contact me at [email protected]
    What Java's Problem Is:
    As far as I can see the only problem that java has these days is the client inconsistencys, this is due to Microsoft and there attempted dustruction of the HUGE java language, and Microsoft has succeeded wonderfully thus far, which is sad. I feel it is only due to the way Sun markets Java, not that they have not tried but they are going about it the wrong way.
    Sun Feels They Are Being Oppressed:
    It seems to me that Sun has a feeling of being oppressed by Microsoft, they see the company inflicting standards on the computing world that are self centered and platform specific, this is why java was created, to break that mold and it does it wonderfully but java has not gained populatiry because of marketing technique, no, it has gained popularity because it REALLY is what it is cracked up to be....A better way of doing things....
    That is why sun landed the title of being one the the most innovative companys today by the magazine �PC World� ranking 13th place while Microsoft landed 137th (i think).
    Yet with all this technology sun does not try to inflict it's standards on the PC world, well you might think what about all those court cases, for instance the most recent that suggests that Sun wants to FORCE Microsoft to install their JVM. I think stuff like this just slows Sun down, as we learned with previous cases Microsoft is just to big to fight and if you do manage to win it will be 3-4 years later. If you think about it time is money, why waste time? Trying to leach off of Microsoft is NOT the way to inflict standards, infact it is one of the worst ways because by the time you would have won microsoft would have bullied the java enviroment to it's grave (umm .net). So you may ask how do we enforce standards without the help of microsoft, the answer is more simple than you may think yet for some reason it has not been thought of by Sun. So far this is what has brought microsoft to the top.
    1.Great Software
    2.Enforced Standards, and Implementation
    3.Excellent Marketing
    4.Protected Software (Ideas)
    5.Industry Wide Support
    Innovation is not on this list, Microsoft does not have a innovative bone in it's body at the moment, it just buys technology that it needs, and has flashy GUI's, and a huge amount of support in the software industry. This is why according to the magazine �PC World� microsoft ranks #137 in innovation while Sun sits at a satisfying ranking of #13.
    What this means is that Sun just is more innovative, it has technology out there that could be used but it can't because we have clients with Version 1.3 Java software on their PC's, Either that or Propietary and NOT PLATFORM INDEPENDENT Microsoft JVM's which Microsoft will again start to distribute in 2004 on XP, this brings me to my first point, if we are going to have a platform independent language it needs to come from ONE POINT that will be implemented by all Manufactures (the W3C for instance). You may be thinking well how do you enforce the SUN JVM if microsoft does not pack it with windows? The answer is you do what most new companys do and that is goto the PC Vendors. I would like to point out that microsoft is for the most part ONLY a software company (aside from some of there PC products), but they do not build and distribute PC systems, thus microsoft does not control what can go on a PC, I would like to point out the growing Linux threat to windows, more particulary the linux based operating system (Lindows) recently lindows has aquired a deal with walmart to sell there operating system as a subsitute to windows, this worked out phenominaly and right now walmart cannot seem to keep enough of the pc's on the shelves (since they cost only about 199$). Case point linux has also grown enormously due to �Home Editions� of linux (Red Hat). The first point I would like to make is that Sun should be PAYING vendors to install the SUN JVM over the microsoft one, this takes care of a few of Sun's problems (Not as much industry support as microsoft, and upgrading the JVM) all this can be done for a measily 5-6 million a year and will reach about 70% of the PC sector, infact I am almost certain this is how microsoft started out.
    One Of Java's Big Problems JVM Inconsistencys
    Now if Sun locks 70% of the PC market that will already be a large boost for java, but the question is how to make the percentage grow to 100%... I would now like to point out the company Macromedia, macromedia products are phenominal, and have changed the way media is seen on the web, particularly the Flash product that macromedia sells, now at this moment macromedia has stated that >90% flash support exists on the web today and >70% is with the most current version of flash, as I see it infact flash is one of the most universally supported pieces of software even more so than microsoft, this is why you see flash movies on yahoo, cnet, amazon, and even MSN! So you may ask what made flash what it is today? Well as described before flash is supported and installed by PC vendors, and even if it is not you can bearly go any place on the web with out getting a message stating that you should upgrade to the most current version of flash, this is due to the wide support on the web..... Now on the other hand if I run a java applet and the applet was compiled with some new features that were not supported in version 1.3 (Swing for example) we will get an error message stating that the package cannot be found and the applet will not run...You do not get any messages to upgrade, no window prompts, nothing..which brings me to my next point the java compiler should include the code (a pre JVM 1.3 version & microsoft JVM compatiable) that will prompt you to install the most current version of Java you already see default loaders for swing, a plugin check should also be included in all programs to ensure that you have to most recent version, and if you do not then it will send you to the Sun Website, or display a update manager or something. Getting an error saying that the applet packages are not found does not help the user any it only frusterates them, you have to physically provide a remedy to the problem at hand. This should also check to see if the microsoft JVM is installed and if it is prompt to upgrade to the Sun JVM, this will pretty much distroy the use of the microsoft JVM.
    This takes care of the enforcing standards part, braudens the Industry Wide Support, and protects the java enviroment, last but not least you need to promote the software, Java already does this excellently with webservices, and other things but there are more consumers than businesses and Java should also be concentrating more on the excellent 3d support that they have, the networking features of java, ect. Take OpenOffice.org for instance the product has grown emmensly since it has started and much uses Java API's, you would see much growth in Java if you provided other products like Open Office for free, for instance a Quake Like Multiplayer game in Java 3D distributed on an open source enviroment, in applet form (since applets are exclusivly a invention of Java), and then have a couple of servers set up that people can play for free on Sun's site, more networking app's for free, ect. You have to promote some of the more flashy features of Sun this way in order to see more growth and support and for free (learn from linux which is quickly becoming a HUGE threat for microsoft) if sun is making 13 billion a year I see no problem to them sporting a couple of servers with some USEFUL online apps/games/ect that sport how innovative java really is, and if they really need to they can have all the banners on stuff like the online games, take Http://www.runescape.com that sports an average of 10,000 users at any moment using the cross platform Java 3d API and they do it for free! All open source free products should be on Suns website, it shows how strong of a community Sun really is, instead of having it on some other website like www.openoffice.org that only sports Sun's name maybe a few times you might occasionally see a logo.. it would be better to maybe get open office from an address like www.openoffice.sun.com, maybe try a www.games.sun.com address or a www.apps.sun.com and then advertise the stuff that can be found at the Sun website. Sun should be proud to be open source, it is the only thing microsoft can't buy....
    Opinions Of Matt Prokes..
    [email protected]

    Sun should be proud to be open source, it is the only thing microsoft
    can't buy....Thats the only line of your whole pointless post that I read.
    Since when is "sun" open source. I imagine you mean java. Java isn't open source, what makes you think it is? You can get the source for it and modify it to suit ur needs as per the license but this isn't really open source.. is it?
    Anyway, don't waste space with your crap here, send an e-mail to somebody at sun instead, its just a waste posting this here.

  • High-units reflect twice the amount with dual JVM's in a distributed cache

    HI all,
    I have a question - i have a near cache scheme defined - running 4 JVM's with my application deployed to it (localstorage=false) - and 2 JVM's for the distributed cache (localstorage=true)
    The high-units is set to 2000 - but the cache is allowing 4000. Is this b/c each JVM will allow for 2000 high-units each?
    I was under the impression that as long as coherence is running in the same multi-cast address and port - that the total high-units would be 2000 not 4000.
    Thanks...

    user644269 wrote:
    HI all,
    I have a question - i have a near cache scheme defined - running 4 JVM's with my application deployed to it (localstorage=false) - and 2 JVM's for the distributed cache (localstorage=true)
    The high-units is set to 2000 - but the cache is allowing 4000. Is this b/c each JVM will allow for 2000 high-units each?
    I was under the impression that as long as coherence is running in the same multi-cast address and port - that the total high-units would be 2000 not 4000.
    Thanks...Hi,
    the high-unit setting is per-backing map, so in your case it means 2000 units per storage-enabled nodes.
    From 3.5 it will become a bit more complex with the partition aware backing maps.
    Best regards,
    Robert

  • Distributing JVM with Application

    Hi,
    Is it possible to distribute a JVM with an application? We do not have install access on the machines that the application will be run on, and therefore want to somehow 'embed' the JVM on the install CD, so that it doesnt have to be installed on the local disk.
    Any suggestions?
    Thanks.

    Sure - we do this all the time. Until JREs are shipped with every new computer, and they do auto-updates (That actually work!), there's no way we will trust an end user to have the proper JRE installed.
    Just copy the JRE to the disk, and launch javaw.exe from there. No need to install as long as you have your classpath set.
    We actually create a little JNI C program that takes care of setting the classpath, picking out the correct class to launch, etc... (this also has the bennefit of having a nice icon for the user to click on, and shows in the task manager with a meaningful name - instead of javaw).
    - K

  • Several JVM s with RMI?

    Hi,
    As you can guess, my Java program needs more and more memory as users connections grow.
    We are of course trying to optimize the way it’s running but looks like we will anyway soon need to increase ressources of our JVM.
    We first thought to increase memory heap but there is a limit, on any 32 bit system 4Go seems the theoretical maximum ram size. And we have to keep a 32 bit JVM, can’t change this.
    Here is our next idea: we would like to run our program on several JVMs.
    Two options came then, and so here are my question: (maybe irrelevant for experts but I am a beginner regarding distributed architecture, so feel free to give me some reference to learn about it…)
    -First option: several 32 bit JVMs running together on one 64bits machine
    Is it possible to run several 32 bit JVM (jre 1.5) on a windows (or linux) 64 bits machine? So that we could ‘share’ the system (big) ram between each of them.
    Is there, in this case, a limit for the memory heap per JVM?
    What would be in this case the best way to communicate between jvms (I m thinking about RMI, but is it the only way to?)
    -Second option: run several 32bits JVM on several 32 bits machine.
    Questions are the same here:
    is it possible? I guess so, and would it be worse or better from a performance/learning time point of view, compare to option 1?
    Is RMI the best way here to make the several jvm communicate?
    Hope this is clear, english is not my first language so feel free to ask me any precision…
    Thank you very much for any help or reference.
    Jipe

    Multiple JVMs dont have any inherent special behavior on the same maching. However, you must consider the shared resources of that machine such as ports and files that may be contended for.
    The only advantage of multiple JVMs of single JVMs is an OS one. The JVMs are separate processes and as such if one crashes it will not bring the other down.
    If you want to transfer user sessions from one JVM to another, no matter if on the same computer or not, you will need an architecture to support this. That is where application servers come in. Some of them will allow you to do this. So if you design your product to run in an application server, you have a lot of room to expand. That is really the benefit of designing for an application server.
    The details of a shared session are likely very complicated. You will have to ask the application server folks about that. Maybe go over to the JBoss forums.

  • Error in Central Instance installation ERP 2005 Distributed System

    Hi All,
    I am currently trying to install Central Instance for ABAP Distributed system  on AIX.
    During the installation I encounter this error message:
    WARNING 2006-09-20 14:22:39
    Could not determine a valid JAVA_HOME directory from the environment.
    INFO 2006-09-20 14:22:39
    Creating file /tmp/sapinst_instdir/ERP/SYSTEM/ORA/DISTRIBUTED/AS-ABAP/CI/FormalPasswordCheck.log.
    ERROR 2006-09-20 14:22:39
    FSL-04008  Unable to access application bin/java. A file or directory in the path name does not exist.
    Before the installation SAPINST_JRE_HOME and JAVA_HOME variables were set to /usr/java14.
    Please help.
    Thanks,
    Chie

    Hi Chie,
    definately wrong
    the output should be similar to this one:
    java version "1.4.2"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2)
    Classic VM (build 1.4.2, J2RE 1.4.2 IBM AIX 5L for PowerPC (64 bit JVM) build caix64142sr1aifx-20051020 (SAP 142SR1a + 88494 + 84428 + 83602 + 89528 + 90372 + 88233 + 66827 + 92741 + 95636 + 96556 + 96581) (JIT enabled: jitc))
    note the "64 bit" and "SAP" in there...
    You can download it here:
    https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=javasap
    Regards,
    Pascal
    PS: please give points for helpful answers

  • Why is it only possible to run queries on a Distributed cache?

    I found by experiementation that if you put a NearCache (only for the benefit of its QueryMap functions) on top of a ReplicatedCache, it will throw a runtime exception saying that the query operations are not supported on the ReplicatedCache.
    I understand that the primary goal of the QueryMap interface is to be able to do large, distributed queries on the data across machines in the cluster. However, there are definitely situations where it is useful (such as in my application) to be able to run a local query on the cache to take advantage of the index APIs, etc, for your searches.

    Kris,
    I believe the only API that is currently not supported for ReplicatedCache(s) is "addIndex" and "removeIndex". The query methods "keySet(Filter)" and "entrySet(Filter, Comparator)" are fully implemented.
    The reason the index functionality was "pushed" out of 2.x timeframe was an assumption that ReplicatedCache would hold a not-too-big number of entries and since all the data is "local" to the querying JVM the performance of non-indexed iterator would be acceptable. We do, however, plan to fully support the index functionality for ReplicatedCache in our future releases.
    Unless I misunderstand your design, since the com.tangosol.net.NamedCache interface extends com.tangosol.util.QueryMap there is no reason to wrap the NamedCache created by the ReplicatedCache service (i.e. returned by CacheFactory.getReplicatedCache method) using the NearCache construct.
    Gene

  • JVM Compatibility

    (new thread please!) Grant Ronald - Forms Product Management.
    At your request Grant.
    Compatibility ( Jinit vs Ms JVM vs Sun JVM ) - Not sure what you mean, we certify Jinit, we certify native JVMs we certify the Sun plug in, we certify IE, we certify NS, we certify Mac browsers - whats the issue
    Oracle Certainly doe support many different environments, the problem is that forms deployment on the internet is still a problem. As we have started our deployment we are seeing failures in 10-20% of clients, with jvm problems and we specify IE only. These clients have either no JVM or the wrong JVM for forms.
    We do not have this problem with the menu applet that we use.
    The solution to this is to force a download of a JVM as part of the initial process. As we examined this we found:
    1. Jinitiator -
    8 megabyte download
    No Feedback on download when triggered from the form until the download is complete.
    No usable Oracle source for the plug-in. Try wading through the download to get the right Jinitiator.
    No Web Install for Jinitiator. ( user gets F.U.D. when faced with exe download pop up).
    2. Microsoft JVM
    5 megabyte download if you can find it.
    No longer supported by Microsoft, but available on other sites.
    Limited functionallity. 800k Cab file must be downloaded for each form session.
    3. Sun Java Plug-in
    14 megabyte download
    This downloads and installs as J2ME not as a simple plug in.
    The only doc on setup for this is a White paper, which is not specific enough for most developers.
    The current download 1.4.2_1 also has warnings on the download that the file does not match the certificate.
    Also, the signature of the applet with JDK is downright hokey.
    Distributing an applet signed by "Developer" whose authenticity is verified by "Oracle" who is not trusted.
    Come on. This is your "Oracle's" applet not and you can afford to buy a certificate from Verisign.
    As we developers and our customers struggle, we see Microsoft pushing .Net where the promise is 95% compatibility with no download required ( since the hide it in the base OS).
    Grant you are caught in the middle but there are things that you can do.
    1. Fix the jar signature now
    2. Continue to work with Sun on a light-weight browser plug-in. The "Java Get it now" should be as simple as the Acrobat reader process without the extra baggage.
    These are the things to do if you are serious and we are watching you.
    Kevin

    Kevin,
    sure Forms very much depends on the JVM it is executed in. But saying "Continue to work with Sun on a light-weight browser plug-in. The "Java Get it now" should be as simple as the Acrobat reader process without the extra baggage." is not fair as it ignores the fact that Adobe is a meta data definition while Java is a J2SE platform for real application programming.
    Native Java Swing apps, even those using Java Webstart", all require VMs for execution. However, it is not only the VM that you download when installing JInitiator or the Java plugIn, its the full Java platform stack you get too. With each Java release the Java language grows and becomes more complex, the VM needs to know how to handle this.
    JInitiator basically is an Oracle patched version of SUNs Java PlugIn and therefore doesn't differ much in the way you install and deploy it.
    I agree that we all want it easier and smaller. Microsoft and Netscape terribly failed in integrating a solid and up to date VM to their Browsers and Opera didn't even try.
    Simply remove pieces from the JVM or the Java platform to reduce size gets you into more trouble due to broken functionality and you don't really want to deal with this.
    Partial - on demand - loading of the Java platform code does not work either for security reason.
    Though its hard to live with a PlugIn it basically works and beside of that is all we have.
    Fran

Maybe you are looking for