Is java.util.Runtime singleton

Hi,
Is java.util.Runtime a Singleton class ?
-Shishir

\j2sdk1.4.2\jre\lib\rt.jar
GoF was copyrighted in 1995.
Java was released in March of 1995. And Runtime wasin it.
It is a singleton, it just wasn't based on thepattern, largely because the pattern didn't exist
yet. Sort of...
OK.
But when did \j2sdk1.4.2\jre\lib come out? ( :-D,
I've no memory for date)
From the Decompiled code,
can we now safely say it's based upon Singleton
pattern? for \j2sdk1.4.2\jre\lib?
What are you talking about?
Runtime existed in java 1.0. It is pointless to discuss what is in 1.4.2 in this context.
Do you mean there is no conclusive evidence for
Singleton pattern?Huh?
I suspect you do not understand the intent of patterns in GoF.
Patterns in GoF were not added unless there was existing functionality at the time that supported the contention that a pattern existed and was being used.
Just because someone doesn't use the GoF book doesn't mean that they are not creating code that uses the patterns that the GoF book collected.
Likewise I can write a compiler without ever having read the Dragon book.
So despite the likelyhood that Runtime was not developed using GoF that does not mean that it isn't a singleton.

Similar Messages

  • Netbeans 6.7.1 & JavaFX Can't Find java.util.* at Runtime

    h1. Problem
    Netbeans 6.7.1 & JavaFX Can't Find the JRE classes (i.e. java.util.*) when the project is run (in Netbeans 6.7.1).
    h1. Reproduce
    Right Click Project_, then Run Project_
    init:
    deps-jar:
    C:\MyJavaFXProject\Source\Java\com\acme\Blah.java:4: cannot find symbol
    symbol : class ArrayDeque
    location: package java.util
    import java.util.ArrayDeque;h1. Workaround
    Add all the jar's found in JAVA_HOME. This is VERY BAD - because netbeans projects are no longer portable!
    h1. Does anyone else have this problem?
    Can you post a link if this problem is already on the forum or is in an Issue/Bug trackers somewhere please.
    Thanks for Reading.

    Thanks for the reply, evidently you are onto something!
    My NetBeans 6.7.1 JavaFX project is using the "JavaFX SDK on Java 1.6 (Default)" Platform.When I take a look inside this (using Manage Platforms) I can see that the following is in the list of platform classes:
    C:\Program Files\NetBeans 6.7.1\javafx2\javafx-sdk\lib\desktop\rt15.jarI'm assuming that rt15.jar is the java runtime @ version 1.5, and indeed this does NOT contain the Java 6 ArrayDeque ('_Array Deck_') class.
    ahhughes@machine-114 /cygdrive/c/Program Files/NetBeans 6.7.1/javafx2/javafx-sdk/lib/desktop
    $ jar -tvf rt15.jar | grep "ArrayDeque"
    ahhughes@machine-114 /cygdrive/c/Program Files/NetBeans 6.7.1/javafx2/javafx-sdk/lib/desktop
    $So my question is, why? If this is the "_NetBeans JavaFX SDK on Java 1.6 (Default)_", then why is it using the 1.5 runtime? It's obviously using 1.6 at compile time... this just seems busted to me.

  • Can't load runtime properties in java.util.logging.LogManager

    This should be so easy, what am I doing wrong?
    I have the following logging.properties located on my classpath:
    handlers=java.util.logging.ConsoleHandler
    .level=INFO
    java.util.logging.ConsoleHandler.level=INFO
    java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
    Test.level=FINE
    Test.handlers=java.util.logging.ConsoleHandlerI have a very simple Test.java file that should load the new properties file and print out the known logger names (ie Test).
    I've also tried putting Test.java in a package, it didn't seem to matter.
    public class Test {
      public Test() {
        String name = this.getClass().getName();
        //this properties file is should be sitting in same dir as Test class
        java.io.InputStream is = this.getClass().getResourceAsStream("logging.properties");
        try {
          //get log manager instance
          java.util.logging.LogManager lm = java.util.logging.LogManager.getLogManager();
          //read the new configuration
          lm.readConfiguration(is);
          //print out list of logger names
          java.util.Enumeration e = lm.getLoggerNames();
          while (e.hasMoreElements()) {
            System.out.println(e.nextElement());
          //print logger for this class!
          System.out.println("getLogger("+name+"): "+lm.getLogger(name));
        } catch (Exception e) {
        } finally {
          try {
            is.close();
            is = null;
          } catch (Exception e) {}
      public static void main(String[] args) {
        Test test1 = new Test();
    }The output I get from this is a single logger name, and then null for my desired Test logger.
    global
    getLogger(Test): null

    It seems a logger instance HAS been created for my Test class, I've added the lines below. Though it didn't appear in the logger names enumeration.
    java.util.logging.Logger logger = java.util.logging.Logger.getLogger(name);
    System.out.println(logger.getName()+"="+logger.getLevel().getName());
    logger.severe("severe");
    logger.warning("warning");
    logger.info("info");
    logger.config("config");
    logger.fine("fine");
    logger.finer("finer");
    logger.finest("finest");Output:Test=FINEST
    6/10/2003 16:00:01 Test <init>
    SEVERE: severe
    6/10/2003 16:00:01 Test <init>
    WARNING: warning
    6/10/2003 16:00:01 Test <init>
    INFO: infoObservations:
    1) Despite my Test class having the FINEST log level, the default ConsoleHandler had log level of INFO, and hence only up to INFO logged.

  • Java.util.Date

    I have a session bean which is published as a web service. The methods in this bean have a return type of java.util.Date.
    I am unable to invoke any of these web services method in Studio creator. These work fine with a .NET client. The exception is as follows:
    InvocationTargetException com.sun.rave.websvc.ui.ReflectionHelper.callMethodWithParams(ReflectionHelper.java:451) com.sun.rave.websvc.ui.TestWebServiceMethodDlg.invokeMethod(TestWebServiceMethodDlg.java:361) com.sun.rave.websvc.ui.TestWebServiceMethodDlg.access$500(TestWebServiceMethodDlg.java:55) com.sun.rave.websvc.ui.TestWebServiceMethodDlg$4.run(TestWebServiceMethodDlg.java:301) java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178) java.awt.EventQueue.dispatchEvent(EventQueue.java:454) java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201) java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) java.awt.EventDispatchThread.run(EventDispatchThread.java:100) null sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) com.sun.rave.websvc.ui.ReflectionHelper.callMethodWithParams(ReflectionHelper.java:445) com.sun.rave.websvc.ui.TestWebServiceMethodDlg.invokeMethod(TestWebServiceMethodDlg.java:361) com.sun.rave.websvc.ui.TestWebServiceMethodDlg.access$500(TestWebServiceMethodDlg.java:55) com.sun.rave.websvc.ui.TestWebServiceMethodDlg$4.run(TestWebServiceMethodDlg.java:301) java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178) java.awt.EventQueue.dispatchEvent(EventQueue.java:454) java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201) java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) java.awt.EventDispatchThread.run(EventDispatchThread.java:100) Runtime exception; nested exception is: deserialization error: java.lang.NumberFormatException: For input string: "" com.sun.xml.rpc.client.StreamingSender._handleRuntimeExceptionInSend(StreamingSender.java:248) com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:230) webservice.AddDates_Stub.addToDay(AddDates_Stub.java:68) webservice.AddDatesServiceClient.adddatesserviceAddToDay(AddDatesServiceClient.java:19) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) com.sun.rave.websvc.ui.ReflectionHelper.callMethodWithParams(ReflectionHelper.java:445) com.sun.rave.websvc.ui.TestWebServiceMethodDlg.invokeMethod(TestWebServiceMethodDlg.java:361) com.sun.rave.websvc.ui.TestWebServiceMethodDlg.access$500(TestWebServiceMethodDlg.java:55) com.sun.rave.websvc.ui.TestWebServiceMethodDlg$4.run(TestWebServiceMethodDlg.java:301) java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178) java.awt.EventQueue.dispatchEvent(EventQueue.java:454) java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201) java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) java.awt.EventDispatchThread.run(EventDispatchThread.java:100) deserialization error: java.lang.NumberFormatException: For input string: "" com.sun.xml.rpc.encoding.SimpleTypeSerializer.deserialize(SimpleTypeSerializer.java:142) webservice.Date_SOAPSerializer.doDeserialize(Date_SOAPSerializer.java:60) com.sun.xml.rpc.encoding.ObjectSerializerBase.deserialize(ObjectSerializerBase.java:167) com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.deserialize(ReferenceableSerializerImpl.java:134) webservice.AddDates_AddToDay_ResponseStruct2_SOAPSerializer.doDeserialize(AddDates_AddToDay_ResponseStruct2_SOAPSerializer.java:40) com.sun.xml.rpc.encoding.ObjectSerializerBase.deserialize(ObjectSerializerBase.java:167) com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.deserialize(ReferenceableSerializerImpl.java:134) webservice.AddDates_Stub._deserialize_AddToDay(AddDates_Stub.java:489) webservice.AddDates_Stub._readFirstBodyElement(AddDates_Stub.java:458) com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:158) webservice.AddDates_Stub.addToDay(AddDates_Stub.java:68) webservice.AddDatesServiceClient.adddatesserviceAddToDay(AddDatesServiceClient.java:19) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) com.sun.rave.websvc.ui.ReflectionHelper.callMethodWithParams(ReflectionHelper.java:445) com.sun.rave.websvc.ui.TestWebServiceMethodDlg.invokeMethod(TestWebServiceMethodDlg.java:361) com.sun.rave.websvc.ui.TestWebServiceMethodDlg.access$500(TestWebServiceMethodDlg.java:55) com.sun.rave.websvc.ui.TestWebServiceMethodDlg$4.run(TestWebServiceMethodDlg.java:301) java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178) java.awt.EventQueue.dispatchEvent(EventQueue.java:454) java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201) java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

    Hi Meera
    This works fine in creator. I tested with a webservice having a method which returns java.util.date. I used the same code in that method to return java.util.Date. But the same method was returning a Calendar object instead of Date. So I added getTime() method to get the Date.
    Can you post few lines of your code that you are writing in Creator.
    Thanks
    Creator Support

  • Executing a shell script from java using runtime.exec()

    Hi I am trying to create a script (test_script) and execute it -- all within one java program...
    the code compiles and executes perfectly but nothing happens. This is probably because the script does not get changed to the '777' mode although i am trying to do that ... any suggestions ???
    //code
    import java.io.*;
    import java.util.*;
    public class ScriptBuilder
         public ScriptBuilder() {
         public void writeScript() throws java.io.IOException{
         FileWriter writer = new FileWriter(new File("test_script"));
              writer.write("#! /bin/sh\n");
              writer.write("cd prodiags\n");
              writer.write("tar cvf delTask.tar delTask\n");
              writer.write("rm -rf delTask\n");          
              writer.flush();
              writer.close();
    Runtime rt= Runtime.getRuntime();
    String[] cmd = new String[3];
    cmd[0] = "ls";
    cmd[1] = "chmod 777 test_script";
    cmd[2] = "./test_script";
    rt.exec(cmd);
         public static void main (String[] args)throws java.io.IOException
         ScriptBuilder sb = new ScriptBuilder();
         sb.writeScript();
    }

    I don't know exactly but the code written below is working fine try the same with your code .Even with your code instead running the code with
    " ./<filename> ",if you execute it with "sh <filename>" command without changing the mode of the file it is executing properly.
    import java.io.*;
    import java.util.*;
    public class ScriptBuilder
    public ScriptBuilder()
    public void writeScript() throws java.io.IOException
    FileWriter writer = new FileWriter(new File("test_script"));
    writer.write("#! /bin/sh\n");
    writer.write("ll>/home/faiyaz/javaprac/checkll");
    writer.flush();
    writer.close();
    Runtime rt= Runtime.getRuntime();
    rt.exec("chmod 777 test_script");
    rt.exec("./test_script");
    } public static void main (String[] args)throws java.io.IOException
    ScriptBuilder sb = new ScriptBuilder();
    sb.writeScript();
    }

  • I have installed axis but i get the following error java.util.MissingResour

    i have installed axis and i get the following error when i try to acces from
    http://localhost:8080/axis/axis/index.jsp
    java.util.MissingResourceException: Can't find bundle for base name i18n, locale en_US
         java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:836)
         java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:805)
         java.util.ResourceBundle.getBundle(ResourceBundle.java:576)
         org.apache.jsp.axis.happyaxis_jsp.getRB(happyaxis_jsp.java:325)
         org.apache.jsp.axis.happyaxis_jsp.getMessage(happyaxis_jsp.java:421)
         org.apache.jsp.axis.happyaxis_jsp.getMessage(happyaxis_jsp.java:359)
         org.apache.jsp.axis.happyaxis_jsp._jspService(happyaxis_jsp.java:557)
         org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
         org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

    the following is the entire error:
    org.apache.jasper.JasperException: Exception in JSP: /axis/i18nLib.jsp:20
    17: * limitations under the License.
    18: */
    19: %>
    20:
    21: <%@ include file="i18nLib.jsp" %>
    22:
    23: <%
    Stacktrace:
         org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
         org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

  • [J2EE:160029] I/O error... java.util.zip.ZipException

    Hi,
    I'm using BEA WLS8.1 SP4 on HPUX Itanium2 with JDK 1.4.2.05.
    When I'm trying to deploy my app's ear file it's throwing
    out the error shown below (far below).
    I've placed the ear file in /opt/bea_wls/weblogic81/server/bin/myserver/upload directory with all the permissions set.
    Please could someone help me resolve this.
    Thanks
    Mouli
    [J2EE:160029]I/O error while reading deployment - java.util.zip.ZipException: Could not find End Of Central Directory. java.util.zip.ZipException: Could not find End Of Central Directory at java.util.zip.ZipFile.open(Ljava.lang.String;I)I(Unknown Source) at java.util.zip.ZipFile.<init>(Ljava.io.File;I)V(Unknown Source) at java.util.jar.JarFile.<init>(Ljava.io.File;ZI)V(JarFile.java:127) at java.util.jar.JarFile.<init>(Ljava.io.File;)V(JarFile.java:92) at weblogic.j2ee.J2EEUtils.getArchiveEarInfo(Ljava.io.File;)Lweblogic.j2ee.DeploymentInfo;(J2EEUtils.java:294) at weblogic.j2ee.J2EEUtils.getDeploymentInfo(Ljava.io.File;)[Lweblogic.j2ee.DeploymentInfo;(J2EEUtils.java:206) at weblogic.j2ee.J2EEUtils.getDeploymentInfo(Lweblogic.application.ApplicationFileManager;)[Lweblogic.j2ee.DeploymentInfo;(J2EEUtils.java:158) at weblogic.j2ee.J2EEApplicationContainerFactory.initializeDeployment(Ljava.io.File;Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;)Lweblogic.management.configuration.ApplicationMBean;(J2EEApplicationContainerFactory.java:464) at weblogic.management.deploy.DeployerRuntime.unprotectedActivate(Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Lweblogic.management.deploy.DeploymentData;Ljava.lang.String;Z)Lweblogic.management.runtime.DeploymentTaskRuntimeMBean;(DeployerRuntime.java:854) at weblogic.management.deploy.DeployerRuntime.access$000(Lweblogic.management.deploy.DeployerRuntime;Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Lweblogic.management.deploy.DeploymentData;Ljava.lang.String;Z)Lweblogic.management.runtime.DeploymentTaskRuntimeMBean;(DeployerRuntime.java:69) at weblogic.management.deploy.DeployerRuntime$1.run()Ljava.lang.Object;(DeployerRuntime.java:1532) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic.security.subject.AbstractSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Object;(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(Lweblogic.security.acl.internal.AuthenticatedSubject;Lweblogic.security.acl.internal.AuthenticatedSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Object;(SecurityManager.java:121) at weblogic.management.deploy.DeployerRuntime.checkAndPerformDeployerActions(Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Lweblogic.management.deploy.DeploymentData;Ljava.lang.String;ZI)Lweblogic.management.runtime.DeploymentTaskRuntimeMBean;(DeployerRuntime.java:1523) at weblogic.management.deploy.DeployerRuntime.activate(Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Lweblogic.management.deploy.DeploymentData;Ljava.lang.String;Z)Lweblogic.management.runtime.DeploymentTaskRuntimeMBean;(DeployerRuntime.java:192) at jrockit.reflect.NativeMethodInvoker.invoke0(Ljava.lang.Object;ILjava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at jrockit.reflect.NativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source) at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(DynamicMBeanImpl.java:754) at weblogic.management.internal.DynamicMBeanImpl.invoke(Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(DynamicMBeanImpl.java:733) at com.sun.management.jmx.MBeanServerImpl.invoke(Ljava.lang.Object;Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(MBeanServerImpl.java:1560) at com.sun.management.jmx.MBeanServerImpl.invoke(Ljavax.management.ObjectName;Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(MBeanServerImpl.java:1528) at weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(Ljavax.management.ObjectName;Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(RemoteMBeanServerImpl.java:988) at weblogic.management.internal.RemoteMBeanServerImpl.invoke(Ljavax.management.ObjectName;Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(RemoteMBeanServerImpl.java:946) at weblogic.management.internal.MBeanProxy.invoke(Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.Object;(MBeanProxy.java:954) at weblogic.management.internal.MBeanProxy.invokeForCachingStub(Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.Object;(MBeanProxy.java:481) at weblogic.management.runtime.DeployerRuntimeMBean_Stub.activate(Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Lweblogic.management.deploy.DeploymentData;Ljava.lang.String;Z)Lweblogic.management.runtime.DeploymentTaskRuntimeMBean;(DeployerRuntimeMBean_Stub.java:1139) at weblogic.management.console.actions.mbean.ApplicationDeployAction.prePerform(Lweblogic.management.console.actions.ActionContext;Lweblogic.management.console.actions.RequestableAction;)Lweblogic.management.console.actions.RequestableAction;(ApplicationDeployAction.java:179) at weblogic.management.console.actions.mbean.DoMBeanWizardAction.perform(Lweblogic.management.console.actions.ActionContext;)Lweblogic.management.console.actions.Action;(DoMBeanWizardAction.java:215) at weblogic.management.console.actions.internal.ActionServlet.doAction(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(ActionServlet.java:173)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    Hi
    THis may be due to the file was FTP to the directory as ASCII mode ...
    Or the file is corrupt.
    Try to pacgake again (with jar command)
    Jin

  • What's wrong with java.util.Date type?

    Hi!
    When I try to persist object having field of type java.util.Date I get the
    following SQL logged by Kodo with subsequent transaction rollback:
    2002-11-14 15:03:35,099 INFO
    [com.solarmetric.kodo.impl.jdbc.ee.ManagedConnecti
    onFactoryImpl.supportcrm/kodo] INSERT INTO BILLY.TT_COMMENTS(COMMENT_TYPE,
    TEXT,
    CREATED_BY, ID, SUBJECT, CREATE_DATE, TT_MAIN_ID) VALUES (1, '1', 10, 279,
    '1',
    {ts '2002-11-14 15:03:35.059'}, 147)
    When I change "{ts '2002-11-14 15:03:35.059'}" with "TO_DATE('2002-11-14
    15:03', 'YYYY-DD-MM HH24:MI')" in SQL editor
    and execute it everything works fine.
    What does "{ts '..'}" mean? Is it a SQL generation error?
    Thank you in advance.
    Best regards,
    Alexey Maslov

    I've created my own dictionary with dateToSQL() method overridden.
    Now it works fine. But it's a kind of strange. Oracle is used often and my
    JDBC drivers
    are the most recent (at least, from the oracle.com).
    Anyway, thank you again.
    "Alexey Maslov" <[email protected]> wrote in message
    news:[email protected]...
    Patric,
    Thank you for response.
    We're using Oracle 8.1.7 via OCI driver from Oracle 9.2.
    I've already tried 2.4.0 and it works fine there but I've found another
    problem there
    preventing me from using it. See my post in solarmetric.kodo.betanewsgroup.
    >
    "Patrick Linskey" <[email protected]> wrote in message
    news:[email protected]...
    That's odd -- what version of Oracle are you using?
    Moving to Kodo JDO 2.4.0
    (http://www.solarmetric.com/Software/beta/2.4.0) will almost certainly
    get rid of this problem, as we use exclusively prepared statements in
    it, and therefore pass dates etc. to JDBC as parameters.
    But, to get things working with your Oracle database and Kodo JDO 2.3,
    you could create your own extension of OracleDictionary and override the
    dateToSQL() method to generate the appropriate TO_DATE() syntax. See our
    documentation for more details on creating custom database dictionaries.
    -Patrick
    Alexey Maslov wrote:
    I've added TRACE level logging for transactions in JBoss and got
    original
    exception:
    NestedThrowables:
    com.solarmetric.kodo.impl.jdbc.sql.SQLExceptionWrapper: [SQL=INSERT
    INTO
    BILLY.T
    T_MAIN(TT_SOLUTION_ID, DELAY_REASON, TT_STATE_ID, ID, CONTACT_PHONE,
    CANCEL_REAS
    ON, OPER_DESCR, TT_TYPE_ID, CREATED_BY, EXP_CLOSE_DATE,SERV_OPEN_DATE,
    OPEN_DAT
    E, FLAGS, TAKEN_BY, TT_CAT_ID, SUBJECT_ID, SUBJECT, SERV_CLOSE_DATE)
    VALUES
    (NUL
    L, NULL, 1, 439, NULL, NULL, '____________ ________________ ________________', 7, 5, {ts
    '2002-11-14 1
    8:38:16.075'}, NULL, {ts '2002-11-14 18:18:16.075'}, 0, NULL, 11,24099,
    '1', NU
    LL)] ORA-00904: invalid column name
    at
    com.solarmetric.kodo.impl.jdbc.runtime.SQLExceptions.throwFatal(SQLEx
    ceptions.java:17)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.insert(JDBCSt
    oreManager.java:421)
    at
    com.solarmetric.kodo.runtime.datacache.DataCacheStoreManager.insert(D
    ataCacheStoreManager.java:265)
    at
    com.solarmetric.kodo.runtime.StateManagerImpl.insert(StateManagerImpl
    ..java:1783)
    atcom.solarmetric.kodo.runtime.PNewState.flush(PNewState.java:31)
    at
    com.solarmetric.kodo.runtime.StateManagerImpl.flush(StateManagerImpl.
    java:372)
    at
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.flush(Persistence
    ManagerImpl.java:426)
    at
    com.solarmetric.kodo.ee.EEPersistenceManager.beforeCompletion(EEPersi
    But when I try to execute the statement above against the database
    manually
    everything works fine.
    I'm absolutely desperate!
    P.S. On 2.4.0 RC the operation invoking this database insert completes
    fine.
    "Alexey Maslov" wrote in message
    news:[email protected]...
    Hi!
    When I try to persist object having field of type java.util.Date I
    get
    the
    following SQL logged by Kodo with subsequent transaction rollback:
    2002-11-14 15:03:35,099 INFO
    [com.solarmetric.kodo.impl.jdbc.ee.ManagedConnecti
    onFactoryImpl.supportcrm/kodo] INSERT INTOBILLY.TT_COMMENTS(COMMENT_TYPE,
    TEXT,
    CREATED_BY, ID, SUBJECT, CREATE_DATE, TT_MAIN_ID) VALUES (1, '1',
    10,
    >>>
    279,
    '1',
    {ts '2002-11-14 15:03:35.059'}, 147)
    When I change "{ts '2002-11-14 15:03:35.059'}" with
    "TO_DATE('2002-11-14
    15:03', 'YYYY-DD-MM HH24:MI')" in SQL editor
    and execute it everything works fine.
    What does "{ts '..'}" mean? Is it a SQL generation error?
    Thank you in advance.
    Best regards,
    Alexey Maslov
    Patrick Linskey [email protected]
    SolarMetric Inc. http://www.solarmetric.com
    Best regards,
    Alexey Maslov

  • Java mapping runtime issue

    Hi,
    I have currently created a java mapping which unzips files and transforms plain text/falt files to xml according to a specific structure... So far so good. This stuff works perfectly when testing interface mapping in the repository. However at runtime it does not work, and this is where you clever guys come into the picture:-)
    It should be mentioned that the zip-file is dropped on a MQ-queue and picked up in XI and passed on to a BPM - the only thing the BPM does is to perform the java mapping and afterwards send one of the messages to R/3 and the other to CRM.
    The concrete error given at runtime in the PE is:
    Error handling for work item 000000718016
    Work item 000000718016: Object CL_SWF_XI_MSG_BROKER method CALL_TRANSFORMATION cannot be executed
    Parsing error before mapping: unexpected end-of-file (line 1, column 1)
    Hope somone can help me on this matter,
    Best regards,
    Daniel
    PS: In case it is of interest/use the java code used is this:
    package dk.post.xi.unzipAndConvert;
    import java.io.*;
    import java.util.Map;
    import java.util.HashMap;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import com.sap.aii.mapping.api.MappingTrace;
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import com.sap.aii.mapping.api.StreamTransformationException;
    public class UnzipMain implements StreamTransformation {
         private MappingTrace mappingTrace = null;
         private Map param = null;
         private StringBuffer currentXmlRecord = new StringBuffer();
        private StringBuffer currentPlainRecord = new StringBuffer();
        private int[][] dataRanges = null;
        private char[] charsInCurrentRange = new char[650];
         private String[] xmlTagNames = null;
         /* (non-Javadoc)
    @see com.sap.aii.mapping.api.StreamTransformation#setParameter(java.util.Map)
    Method must be implemented when class is implementing streamTransformation
           public void setParameter(Map param) {
            this.param = param;
            if (param == null) {
               this.param = new HashMap();
    (non-Javadoc)
    @see com.sap.aii.mapping.api.StreamTransformation#execute(java.io.InputStream, java.io.OutputStream)
    Main function -- called by XI to start execution of java mapping
           public final void execute(InputStream in, OutputStream out)
                throws StreamTransformationException
                //if no input, then cancel program execution
                if (in == null) {
                     throw new RuntimeException("Something wrong with input zip file - is null");
                //input <> null. Begin upzip operation
                try {
                     //test is only relevant outside of XI
                     if (param != null) {
                          mappingTrace = (MappingTrace) param.get(StreamTransformationConstants.MAPPING_TRACE );
                  ZipInputStream zip = null;
                     try {
                          zip = new ZipInputStream(in);
                          ZipEntry ze = null;
                          out.write("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><ns0:Messages xmlns:ns0=\"http://sap.com/xi/XI/SplitAndMerge\">".getBytes());
                          while ((ze = zip.getNextEntry()) != null) {
                               writeDebugInfo("File: " + ze.getName() + " with compressed size: " + ze.getCompressedSize());
                               scrutinize(zip,(ZipEntry) ze, out);
                          out.write("</ns0:Messages>".getBytes());
                     finally {
                          if (zip != null)
                               zip.close();
                          out.flush();
                          out.close();
                } catch (Exception e) {
                     throw new RuntimeException(e + "\nSomething went wrong...");
           //Unzip flat files and convert to xml
           private void scrutinize(ZipInputStream inStream,ZipEntry zipEntry, OutputStream outstream) throws Exception {
                long start = System.currentTimeMillis();
              InputStreamReader inStreamReader = null;
              BufferedReader buffReader = null;
              byte[] xmlBytes = null;
              try {
                   inStreamReader = new InputStreamReader(inStream);
                   buffReader = new BufferedReader(inStreamReader);
                 boolean masterData = zipEntry.getName().equals("PD-01-STAMDATA.DAT");
                 boolean creditData = zipEntry.getName().equals("PD-02-KREDITVURDERING.DAT");
                 String currentLine = null;
                 if (masterData) {
                      writeDebugInfo("- Begin reading and converting every line of MasterData...");     //out-comment this outside of XI, or compilation will fail (functionality is only available in XI)
                      outstream.write("<ns0:Message1><ns1:masterData_MT xmlns:ns1=\"http://pdk/xi/kob/importDataToSap\">".getBytes());
                        while ((currentLine = buffReader.readLine()) != null) {
                           //convert one line of credit data plain into an xml record structure
                           makeXmlRecord(currentLine,true);
                           //Write record XML to XI's outputstream (appends)
                           xmlBytes = currentXmlRecord.toString().getBytes();
                           outstream.write(xmlBytes);
                      outstream.write("</ns1:masterData_MT></ns0:Message1>".getBytes());
                      writeDebugInfo("- Finished reading and converting every line of MasterData...");     //out-comment this outside of XI, or compilation will fail (functionality is only available in XI)
                 if (creditData) {
                      writeDebugInfo("- Begin reading and converting every line of CreditData...");
                      outstream.write("<ns0:Message2><ns1:creditData_MT xmlns:ns1=\"http://pdk/xi/kob/importDataToSap\">".getBytes());
                      while ((currentLine = buffReader.readLine()) != null) {
                           //convert one line of credit data plain into an xml record structure
                           makeXmlRecord(currentLine,false);
                           //Write record XML to XI's outputstream (appends)
                           xmlBytes = currentXmlRecord.toString().getBytes();
                           outstream.write(xmlBytes);
                      outstream.write("</ns1:creditData_MT></ns0:Message2>".getBytes());
                      writeDebugInfo("- Finished reading and converting every line of CreditData...");
              } finally {
                   long timeUsed = System.currentTimeMillis() - start;
                   writeDebugInfo(zipEntry.getName() + "  - Write took: " + timeUsed + " ms");
                   writeDebugInfo("Final statement entered...\n");
           //check for invalid xml chars (plus a few other strange chars) in a plain text record and if any are found update the ranges of so they correspond to the new length of a record
           private int[][] checkRange(String currentPlainLine, boolean isMasterData) {
                int counter = 0;
                int beginRange = 0;
                int endRange = 0;
                //populate array with proper data ranges/intervals according to how data is to be split
                dataRanges = isMasterData ? new int[][] {{0,2},{2,12},{12,44},{44,47},{47,50},{50,295},{295,298},{298,356},{356,426},{426,496},{496,499},{499,506},{506,510},{510,518},{518,540},{540,546},{546,552},{552,558},{558,564},{564,570},{570,576},{576,582},{582,588},{588,594},{594,604}} : new int[][] {{0,2},{2,12},{12,20},{20,23},{23,26},{26,29},{29,44}};
                //ensure stringbuffer is empty
                currentPlainRecord.delete(0,currentPlainRecord.length());
                //insert the current plain text line into stringbuffer
                currentPlainRecord.append(currentPlainLine);
              //loop through outer array (array of ranges)
              for (int i = 0; i <= (dataRanges.length-1); i++) {
                   beginRange = dataRanges<i>[0];
                   counter = beginRange;
                   endRange = dataRanges<i>[1];
                   //loop through stringbuffer, based on the value-pairs of ranges/intervals in array of arrays
                   while (counter < endRange) {
                        switch (currentPlainRecord.charAt(counter)) {
                             case '&':
                                  currentPlainRecord.insert(counter+1,"amp;");          //insert 'amp;' after '&', so that syntax conforms to xml syntax requirements (&amp;)
                                  counter += 5;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,4);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '\'':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '\'' with '&'
                                  currentPlainRecord.insert(counter+1,"apos;");          //insert 'apos;' after '\'', so that syntax conforms to xml syntax requirements (&apos;)
                                  counter += 6;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,5);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '"':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '"' with '&'
                                  currentPlainRecord.insert(counter+1,"quot;");          //insert 'quot;' after '"', so that syntax conforms to xml syntax requirements (&quot;)
                                  counter += 6;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,5);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '<':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '<' with '&'
                                  currentPlainRecord.insert(counter+1,"lt;");               //insert 'lt;' after '&', so that syntax conforms to xml syntax requirements (&lt;)
                                  counter += 4;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,3);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '>':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '>' with '&'
                                  currentPlainRecord.insert(counter+1,"gt;");               //insert 'gt;' after '&', so that syntax conforms to xml syntax requirements (&gt;)
                                  counter += 4;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,3);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case 0x7F:
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace 0x7F with ' '
                                  writeDebugInfo("-- Corrected the character 0x7F ('') to ' '");
                                  counter++;
                                  break;
                             case '‘':
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace 0x91 ('‘') with ' '
                                  writeDebugInfo("-- Corrected the character '‘' to ' '");
                                  counter++;
                                  break;
                             case '›':
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace 0x9B ('›') with ' '
                                  writeDebugInfo("-- Corrected the character 0x9B to ' '");                              counter++;
                                  break;
                             case '†':
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace '†' with ' '
                                  writeDebugInfo("-- Corrected the character '†' to ' '");
                                  counter++;
                                  break;
                             default :
                                  counter++;
                                  break;
                return dataRanges;
           //update array of ranges so that is corresponds to the new range
           private void updateRange(int currentRange, int updateRangeBy) {
              for (int k = currentRange; k < dataRanges.length; k++) {
                   if (k != currentRange) {     //never update begin interval for the current range - only for the remaining intervals
                             dataRanges[k][0] += updateRangeBy;
                   dataRanges[k][1] += updateRangeBy;     //always update end intervals
           //convert one flat record line to a xml record structure
         private void makeXmlRecord(String currentPlainLine,boolean isMasterData) {
              dataRanges = checkRange(currentPlainLine,isMasterData);
              //clear StringBuffer
              currentXmlRecord.delete(0,currentXmlRecord.length());
              //get the correct set of xml tags to be used when performing mapping between plain text and xml
              if (isMasterData) {
                   xmlTagNames = new String[] {"dum1","kob_no","dum2","corp_status","legal_form","dum3","pr_protec_code","dum4","uri","email","emp_no_grp_code","exact_no_emp","dum5","founding_date","dum6","main_industry_code","industry_code1","industry_code2","industry_code3","industry_code4","industry_code5","industry_code6","industry_code7","industry_code8","dum7"};
              } else {
                   xmlTagNames = new String[] {"dum1","kob_no","rating_date","rating_value","risc_grp_code","currency","max_credit"};
              //copy all chars in stringBuffer to the specified char[]
              currentPlainRecord.getChars(0,currentPlainRecord.length(),charsInCurrentRange,0);
              //populate XML record structure
              currentXmlRecord.append("<record>");
              for (int i = 0; i < xmlTagNames.length; i++) {
                   currentXmlRecord.append("<" + xmlTagNames<i> + ">");
                   currentXmlRecord.append(charsInCurrentRange,dataRanges<i>[0],(dataRanges<i>[1])-(dataRanges<i>[0]));
                   currentXmlRecord.append("</" + xmlTagNames<i> + ">");
              currentXmlRecord.append("</record>");
         //write debug information to correct "place"
         private void writeDebugInfo(String debugInfo) {
              if (mappingTrace == null) {
                   System.out.println("Debug: " + debugInfo);
              } else {
                   mappingTrace.addInfo("Debug: " + debugInfo);

    Hi Alex,
    Thanks for your reply. First of all I was wondering if I missed something somewhere in my generel understanding of XI and BPM's!? - I kind of sense some irony/sarkasm in beginning of your reply:-) As far as I know BPM should have no trouble receing non-xml (in my case zip-files)!?
    Anyways here goes:
    1. Yes, this is also my impression that is should be possible somehow (we do currently run sp14). However, I havent yet figured out how to do it in this case. When trying to create interface mapping between the three involved software components, I get a 'MESS_MULTI_MAP_IF_WRONG_SWCV' three times. I've searched around without being able to find any information on the error. I does seem, though, like the problem is that all objects aren't in the same software component!! But this approach is of course the prefered one...
    2. Well - you got me there. Kind of expected someone to point that out:-) This is of course something to be looked into also in order to "improve"/"enhance" the program - though it, as already pointed out, works perfectly as is.
    3. This part I have also thought about - though quickly moved away from the idea, but that is only due to lacking insight/knowhow on the subject. Interesting weblog you have written, something so I will investigate further when  time allows for it:-)
    Best regards,
    Daniel

  • FU Ant task failure: java.util.concurrent.ExecutionException: could not close client/server socket

    We sometimes see this failure intermitently when using the FlexUnit Ant task to run tests in a CI environment. The Ant task throws this exception:
    java.util.concurrent.ExecutionException: could not close client/server socket
    I have seen this for a while now, and still see it with the latest 4.1 RC versions.
    Here is the console output seen along with the above exception:
    FlexUnit player target: flash
    Validating task attributes ...
    Generating default values ...
    Using default working dir [C:\DJTE\commons.formatter_swc\d3flxcmn32\extracted\Source\Flex]
    Using the following settings for the test run:
    FLEX_HOME: [C:\dev\vert-d3flxcmn32\302100.41.0.20110323122739_d3flxcmn32]
    haltonfailure: [false]
    headless: [false]
    display: [99]
    localTrusted: [true]
    player: [flash]
    port: [1024]
    swf: [C:\DJTE\commons.formatter_swc\d3flxcmn32\extracted\build\commons.formatter.tests.unit.sw f]
    timeout: [1800000ms]
    toDir: [C:\DJTE\commons.formatter_swc\d3flxcmn32\reports\xml]
    Setting up server process ...
    Entry  [C:\DJTE\commons.formatter_swc\d3flxcmn32\extracted\build] already  available in local trust file at  [C:\Users\user\AppData\Roaming\Macromedia\Flash  Player\#Security\FlashPlayerTrust\flexUnit.cfg].
    Executing 'rundll32' with arguments:
    'url.dll,FileProtocolHandler'
    'C:\DJTE\commons.formatter_swc\d3flxcmn32\extracted\build\commons.formatter.tests.unit.swf '
    The ' characters around the executable and arguments are
    not part of the command.
    Starting server ...
    Opening server socket on port [1024].
    Waiting for client connection ...
    Client connected.
    Setting inbound buffer size to [262144] bytes.
    Receiving data ...
    Sending acknowledgement to player to start sending test data ...
    Stopping server ...
    End of test data reached, sending acknowledgement to player ...
    When the problem occurs, it is not always during the running of any particular test (that I am aware of). Recent runs where this failure was seen had the following number of tests executed (note: the total number that should be run is 45677): 18021, 18, 229.
    Here is a "good" run when the problem does not occur:
    Setting inbound buffer size to [262144] bytes.
    Receiving data ...
    Sending acknowledgement to player to start sending test data ...
    Stopping server ...
    End of test data reached, sending acknowledgement to player ...
    Closing client connection ...
    Closing server on port [1024] ...
    Analyzing reports ...
    Suite: com.formatters.help.TestGeographicSiteUrls
    Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 sec
    Suite: com.formatters.functionalUnitTest.testCases.TestNumericUDF
    Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.071 sec
    Results :
    Tests run: 45,677, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 201.186 sec
    Has anyone else ran across this problem?
    Thanks,
    Trevor

    I am not sure if this information will help everyone, but here goes...
    For us, these problems with FlexUnit tests crashing the Flash Player appear to be related to couple of factors. Recently, we moved up from Flex 3.2 to Flex 4.1 as our development baseline.  Many people complained that their development environment (Flash Builder, etc.) was much more unstable.  Apparently, 4.1 produces SWFs that require more memory to run than 3.2 does?  Anyway, we still had Flash Player 10.1 as our runtime baseline.  Apparently, that version of the player was not as capable of running larger FlexUnit test SWFs, and would crash (as I posted months earlier).  I upgraded to the latest 10.3 standalone player versions, and the crashes have now ceased.  It would be nice to know exactly what was causing the crashes, but memory management (or lack of) is my best guess.
    So, if you are seeing these issues, try upgrading to the latest Flash Player version.
    Regards,
    Trevor

  • Kodo.util.FatalDataStoreException: java.util.NoSuchElementException

    I am receiving the following exception in our app at what appears to be
    random intervals.
    There were multiple users logged into the system, each getting their own
    persistence manager (by way of pmFactory.getPersistenceManager(), which
    are then stored in the http session and re-used as long as that user is
    logged in) and when they started accessing the system simultaneously
    everything was fine for a while (ranged from 30min to 3 hours) then one
    person would see the exception, then others would see the exception right
    after. Then a few minutes later the problem would be gone again for a
    while
    I have the multithread option set to true in kodo.properties and am using
    pessimistic transactions
    Using kodo 3.3.3
    I am just curious what might cause something like this, it seems as though
    2 threads are trying to commit the same data with the same persistence
    manager to me.
    My next step in debugging this process is extending the persistence
    manager object to add some logging and see if my theory is correct.
    Any pointers to tracking this down would be greatly appreciated
    kodo.util.FatalDataStoreException: java.util.NoSuchElementException
         at
    kodo.runtime.PersistenceManagerImpl.afterCompletion(PersistenceManagerImpl.java:1020)
         at kodo.runtime.LocalManagedRuntime.commit(LocalManagedRuntime.java:86)
         at
    kodo.runtime.PersistenceManagerImpl.commit(PersistenceManagerImpl.java:629)
         at
    com.stchome.cdr.actions.SearchCriteriaWizardAction.searchQbe(SearchCriteriaWizardAction.java:345)
         at sun.reflect.GeneratedMethodAccessor355.invoke(Unknown Source)
         at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
         at
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
         at
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
         at
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
         at
    com.stchome.cdr.servlet.CdrActionServlet.process(CdrActionServlet.java:31)
         at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at
    com.stchome.cdr.servlet.filters.SessionManagerFilter.doFilter(SessionManagerFilter.java:41)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
         at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
         at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
         at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:300)
         at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:374)
         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743)
         at
    org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
         at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866)
         at
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
         at java.lang.Thread.run(Thread.java:534)
    NestedThrowablesStackTrace:
    java.util.NoSuchElementException
         at serp.util.LookaheadIterator.next(LookaheadIterator.java:57)
         at
    com.solarmetric.apache.commons.collections.iterators.IteratorChain.next(IteratorChain.java:264)
         at kodo.util.CacheMap$EntryIterator.next(CacheMap.java:654)
         at java.util.AbstractCollection.toArray(AbstractCollection.java:174)
         at java.util.ArrayList.<init>(ArrayList.java:136)
         at kodo.datacache.QueryCacheImpl.keySet(QueryCacheImpl.java:165)
         at
    kodo.datacache.AbstractQueryCache.classesChanged(AbstractQueryCache.java:60)
         at
    kodo.datacache.DataCacheStoreManager.updateCaches(DataCacheStoreManager.java:217)
         at
    kodo.datacache.DataCacheStoreManager.commit(DataCacheStoreManager.java:73)
         at
    kodo.runtime.PersistenceManagerImpl.endTransaction(PersistenceManagerImpl.java:1317)
         at
    kodo.runtime.PersistenceManagerImpl.afterCompletion(PersistenceManagerImpl.java:998)
         at kodo.runtime.LocalManagedRuntime.commit(LocalManagedRuntime.java:86)
         at
    kodo.runtime.PersistenceManagerImpl.commit(PersistenceManagerImpl.java:629)
         at
    com.stchome.cdr.actions.SearchCriteriaWizardAction.searchQbe(SearchCriteriaWizardAction.java:345)
         at sun.reflect.GeneratedMethodAccessor355.invoke(Unknown Source)
         at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
         at
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
         at
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
         at
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
         at
    com.stchome.cdr.servlet.CdrActionServlet.process(CdrActionServlet.java:31)
         at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at
    com.stchome.cdr.servlet.filters.SessionManagerFilter.doFilter(SessionManagerFilter.java:41)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
         at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
         at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
         at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:300)
         at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:374)
         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743)
         at
    org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
         at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866)
         at
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
         at java.lang.Thread.run(Thread.java:534)

    Thank you stephen, that reply is like music to my ears :)
    Stephen Kim wrote:
    I would upgrade to 3.3.4 or 3.4 as they have resolved that bug.
    Damian Bradicich wrote:
    I am receiving the following exception in our app at what appears to be
    random intervals.
    There were multiple users logged into the system, each getting their own
    persistence manager (by way of pmFactory.getPersistenceManager(), which
    are then stored in the http session and re-used as long as that user is
    logged in) and when they started accessing the system simultaneously
    everything was fine for a while (ranged from 30min to 3 hours) then one
    person would see the exception, then others would see the exception right
    after. Then a few minutes later the problem would be gone again for a
    while
    I have the multithread option set to true in kodo.properties and am using
    pessimistic transactions
    Using kodo 3.3.3
    I am just curious what might cause something like this, it seems as though
    2 threads are trying to commit the same data with the same persistence
    manager to me.
    My next step in debugging this process is extending the persistence
    manager object to add some logging and see if my theory is correct.
    Any pointers to tracking this down would be greatly appreciated
    kodo.util.FatalDataStoreException: java.util.NoSuchElementException
         at
    kodo.runtime.PersistenceManagerImpl.afterCompletion(PersistenceManagerImpl.java:1020)
         at kodo.runtime.LocalManagedRuntime.commit(LocalManagedRuntime.java:86)
         at
    kodo.runtime.PersistenceManagerImpl.commit(PersistenceManagerImpl.java:629)
         at
    com.stchome.cdr.actions.SearchCriteriaWizardAction.searchQbe(SearchCriteriaWizardAction.java:345)
         at sun.reflect.GeneratedMethodAccessor355.invoke(Unknown Source)
         at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
         at
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
         at
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
         at
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
         at
    com.stchome.cdr.servlet.CdrActionServlet.process(CdrActionServlet.java:31)
         at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at
    com.stchome.cdr.servlet.filters.SessionManagerFilter.doFilter(SessionManagerFilter.java:41)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
         at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
         at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
         at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:300)
         at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:374)
         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743)
         at
    org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
         at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866)
         at
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
         at java.lang.Thread.run(Thread.java:534)
    NestedThrowablesStackTrace:
    java.util.NoSuchElementException
         at serp.util.LookaheadIterator.next(LookaheadIterator.java:57)
         at
    com.solarmetric.apache.commons.collections.iterators.IteratorChain.next(IteratorChain.java:264)
         at kodo.util.CacheMap$EntryIterator.next(CacheMap.java:654)
         at java.util.AbstractCollection.toArray(AbstractCollection.java:174)
         at java.util.ArrayList.<init>(ArrayList.java:136)
         at kodo.datacache.QueryCacheImpl.keySet(QueryCacheImpl.java:165)
         at
    kodo.datacache.AbstractQueryCache.classesChanged(AbstractQueryCache.java:60)
         at
    kodo.datacache.DataCacheStoreManager.updateCaches(DataCacheStoreManager.java:217)
         at
    kodo.datacache.DataCacheStoreManager.commit(DataCacheStoreManager.java:73)
         at
    kodo.runtime.PersistenceManagerImpl.endTransaction(PersistenceManagerImpl.java:1317)
         at
    kodo.runtime.PersistenceManagerImpl.afterCompletion(PersistenceManagerImpl.java:998)
         at kodo.runtime.LocalManagedRuntime.commit(LocalManagedRuntime.java:86)
         at
    kodo.runtime.PersistenceManagerImpl.commit(PersistenceManagerImpl.java:629)
         at
    com.stchome.cdr.actions.SearchCriteriaWizardAction.searchQbe(SearchCriteriaWizardAction.java:345)
         at sun.reflect.GeneratedMethodAccessor355.invoke(Unknown Source)
         at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
         at
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
         at
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
         at
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
         at
    com.stchome.cdr.servlet.CdrActionServlet.process(CdrActionServlet.java:31)
         at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at
    com.stchome.cdr.servlet.filters.SessionManagerFilter.doFilter(SessionManagerFilter.java:41)
         at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
         at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
         at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at
    org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
         at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
         at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
         at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:300)
         at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:374)
         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743)
         at
    org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
         at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866)
         at
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
         at java.lang.Thread.run(Thread.java:534)
    Steve Kim
    [email protected]
    SolarMetric Inc.
    http://www.solarmetric.com

  • JRE 1.6 missing/can't find java/util package

    I installed Sun's JRE1.6 to mitigate the DST issue a couple
    of months ago. In the past few days, my clients report when, trying
    access web-services the Java Compiler throws an exception dealing
    with the inability to access the java/util package.
    One solution (in Japanese) purported to say that if one adds
    the switch:
    -Djmx.invoke.getters=true
    This can help mitigate the issue (after a restart). I did for
    a couple of hours but the services began failing again.
    ### Exception Code ###
    coldfusion.jsp.CompilationFailedException: Errors reported by
    Java compiler: Found 2 system errors: *** Error: Could not find
    package "java/util" in:
    /opt/coldfusionmx7/runtime/jre/bin/jre1.6.0/lib/ext/sunjce_provider.jar
    [filepath]coldfusionmx7/runtime/jre/bin/jre1.6.0/lib/ext/sunpkcs11.jar
    [filepath]coldfusionmx7/runtime/jre/bin/jre1.6.0/lib/ext/dnsns.jar
    [filepath]coldfusionmx7/runtime/jre/bin/jre1.6.0/lib/ext/meta-index
    [filepath]/coldfusionmx7/runtime/jre/bin/jre1.6.0/lib/ext/localedata.jar
    /opt/coldfusionmx7/wwwroot/WEB-INF/classes
    [filepath]/coldfusionmx7/wwwroot/WEB-INF/lib/cfmx_bootstrap.jar
    /opt/coldfusionmx7/wwwroot/WEB-INF/lib/cfx.jar
    [filepath]/coldfusionmx7/wwwroot/WEB-INF/lib/commons-beanutils.jar
    [filepath]/coldfusionmx7/wwwroot/WEB-INF/lib/commons-collections.jar
    /opt/coldfusionmx7/wwwroot/WEB-INF/lib/js.jar
    [filepath]/coldfusionmx7/lib/updates/chf700003.jar
    /opt/coldfusionmx7/lib/ant-launcher.jar ....
    ### EOF ###
    SysInfo:
    Solaris 2.8
    CFMX Ent 7.0.0
    Java Version 1.6.0b.105

    Thx Ian - you're correct. I've incepted 1.4.12 and
    web-services are up and running *note to readers: watch your
    permissons on the new files - ensure CFSvr "user" has access to new
    files.
    This technote details how to upgrade the JVM:
    http://kb.adobe.com/selfservice/viewContent.do?externalId=2d547983&sliceId=2
    Thank you both. DjlR

  • Java.utils.prefs.Preferences API throws exception on Mac, not Windows

    This is a Mac-specific problem. Is it a bug, or am I misusing the java.utils.prefs.Preferences API?
    The Preferences flush() API call always throws a BackingStoreException if a system tree preferences root has been read. The system tree has not been modified or written to, but the flush() call is nevertheless throwing an exception. This occurs when running as a normal user without the ability to write to /Library/Preferences.
    See sample code below. Note that I only want to read the system prefs tree. The user tree write flush fails. If the system tree node is not created, the user flush() succeeds.
    Steps to Reproduce
    Delete any existing Java prefs files:
    ~/Library/Preferences/com.apple.java.util.prefs.plist
    ~/Library/Preferences/com.mycompany.prefstest
    /Library/Preferences/com.apple.java.util.prefs.plist
    /Library/Preferences/com.mycompany.prefstest
    Run the following Java code:
    package com.mycompany.prefstest;
    import java.util.prefs.BackingStoreException;
    import java.util.prefs.Preferences;
    public class PrefsTest {
          * @param args
         public static void main(String[] args) {
              String strKey1 = "com/mycompany/prefstest/one/two/three/four/key1";
              Preferences systemRoot = Preferences.systemRoot();
              Preferences userRoot = Preferences.userRoot();
              // Get a value for user prefs.
              String value1 = userRoot.get(strKey1, "missing");
              // Fall back to system prefs if it is not defined.
              if (value1.equals("missing"))
                   value1 = systemRoot.get(strKey1, "missing");
              System.out.println("key1 --> " + value1);
              // If still not defined, set a user-specific value
              if (value1.equals("missing"))
                   userRoot.put(strKey1, "value1");
                   try {
                        userRoot.flush();
                        System.out.println("flushed prefs successfully");
                   catch (BackingStoreException e)
                        System.out.println("Exception: " + e.toString());
    Expected Results
    Should produce the output:
    key --> missing
    flushed prefs successfully
    Actual Results
    Console output is
    key --> missing
    Exception: java.util.prefs.BackingStoreException: Synchronization failed for node '/'
    Notes
    $ java -version
    java version "1.6.0_29"
    Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11D50b)
    Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
    also tested with:
    java version "1.7.0_04-ea"
    Java(TM) SE Runtime Environment (build 1.7.0_04-ea-b16)
    Java HotSpot(TM) 64-Bit Server VM (build 23.0-b17, mixed mode)
    Mac OS X 10.7.3.
    The "Expected Results" are correctly obtained running the same code on MS-Windows.
    Running the jar as sudo works (with write access to /Library/Preferences), as expected.

    Just for fun, try a key without slashes in it (but for example dots if you must use such a long key).
    I say that because a quick Google search points out that Apple stores the preferences in a file hierarchy in the user home folder. I can already see how using keys which look like a file path are going to cause nuclear reactors to meltdown...

  • Java.sql.Date and java.util.Date - class loaded first in the classpath

    I had two jar files which has java.util.Date and java.sql.Date class file. i want to know whether which class is loaded first in the classpath...
    I like to change the order of loading the class at runtime...
    Is there is any way to change the order of loading of class...
    I may have different version of jar files for example xerces,xercesImpl. some of the code uses xerces ,some of the code uses xercesImpl..i had common classes.
    I like to load the class with the same name according to the order i need..
    Can we do all these in Run time ?????

    I had two jar files which has java.util.Date and
    java.sql.Date class file. i want to know whether
    which class is loaded first in the classpath...
    I like to change the order of loading the class at
    runtime...
    Is there is any way to change the order of loading of
    class...
    I may have different version of jar files for example
    xerces,xercesImpl. some of the code uses xerces ,some
    of the code uses xercesImpl..i had common classes.
    I like to load the class with the same name according
    to the order i need..
    Can we do all these in Run time ?????That is meaningless.
    The classes you are referring to are part of the Java API. Third party jars have no impact on that. And you can't change to the order because java.sql.Data is derived from java.util.Date. So the second must load before the first.
    And if you have two jar files with those classes in them (and not classes that use them) then you either should already know how to use them or you should stop trying to do whatever you are doing because it isn't going to work.

  • Java's Runtime.exec() method

    When you shell out to java's Runtime.exec() method, are the process name and arguments the same for the child process that is spawned.
    We see duplicated processes about the time when our logs tell us this command was run. However, we cannot seem to reproduce this. Has anyone else seen anyone this before?

    That's what I though too. But check this out . . .
    Our code looks as follows:
    private Runtime rt;
    private Process p;
    rt = Rutime.getRuntime();
    p = rt.exec(command);
    This exec() call creates a new process, which is a child of the java process that runs this command. The final process looks like the "command" string that is passed to the exec() method call. In our case, the command is a call to the /usr/bin/mail utility to send out faxes and emails.
    We ran a very tight loop executing the rt.exec() call over and over. What we found was that for a minor fraction of a second, the newly created process looks just like the original process including the same arguments. However, the PID's indicated that one process was the child of the other. This is why it looked like we had 2 of the same processes. WILD!
    Thanks guys!

Maybe you are looking for