Preferences storage

I'm using the new (since j2sdk 1.4) Preferences API to store a small number of prefs. I use user nodes (as opposed tot system nodes), and in Windows the application works correct, but linux users get problems with the backingstore(BackingStoreException). The root user does not have this problem.
The good point about the preferences also seems a bad point: I don't know where the data is stored, so I can't advise on setting a certain directory readable/writable. Any suggestions? I'll post the errors that occur:
Preferences prefs = Preferences.userNodeForPackage(auteurstool.Auteursomgeving.class);
boolean someChoice = prefs.getBoolean("some choice", true);
And I'm getting these errors:
13-nov-2002 16:44:59 java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush user
prefs: java.util.prefs.BackingStoreException: java.lang.ClassCastException:
org.apache.xerces.dom.DeferredCommentImpl
13-nov-2002 16:45:00 java.util.prefs.FileSystemPreferences
checkLockFile0ErrorCode
WARNING: Could not lock System prefs.Unix error code 135399620.
13-nov-2002 16:45:00 java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush system
prefs: java.util.prefs.BackingStoreException: Couldn't get file lock.
java.util.prefs.BackingStoreException: Couldn't get file lock.

As if I had read about this issue in the forums. The solution was that the preferences files were owned and only modifiable by root. The remedy was to locate them and change their permissions.
If the path name of the preferences files is not documented, you can still do some trick:
1) as root
# touch sentinel
# java what.ever.hacks.with.the.preferences
# find / -newer sentinel
to find the files changed after "sentinel" - the preferences ones among them.
2) strace java what.ever.hacks.with.the.preferences
will trace the system calls (including file system operations).

Similar Messages

  • Preferences storage location?

    The Preferences API provides a transparent way to store preferences. But I can't find a method to retrieve the actual storage location on the system. I read in the forums that on Windows they are stored in the registry. On Unix in ~/.java/.userPrefs. But I would like to have a generic API to get the location.
    The reason is simple and also quite important: if a user wants to uninstall my application, the preferences are left on the system. AT least I need to tell the user where they are stored so he can remove them too.

    That's very kind of you, but also very non-standard. I very rarely encounter applications whose uninstallers clean up completely, or even provide an option to do that.
    However you already have an API which, although it doesn't give you the "location" of the preferences, allows you to delete all the preferences. It's the java.util.prefs.Preferences class itself.
    You wouldn't want to tell the user that the preferences are in the Windows registry anyway. Most users are unaware that it even exists, and deleting entries from the registry is a dangerous process that shouldn't be done by the uninitiated.

  • Preferences storage on XP?

    I need to find where java.util.prefs.Preferences are stored on a WinXP system.
    Anyone that knows?

    BillyTheKid wrote:
    I need to find where java.util.prefs.Preferences are stored on a WinXP system.
    Anyone that knows?http://mindprod.com/jgloss/preferences.html

  • Simple question about Preferences storage

    Somebody could tell to me where are stored the preferences
    (java.util.prefs.Preferences) by default ?
    Thanks
    Ludovic

    The default preferences deal with user ~ and system settings.
    On Windows:
    in the registry C:\Windows\regedit.exe
    HKEY_CURRENT_USER/Software/JavaSoft/Prefs/ for Preferences.userRoot.
    HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Prefs/ for Preferences.systemRoot.
    Using the following methods keep these preference trees organized:
    Preferences userNodeForPackage(Class c);
    Preferences systemNodeForPackage(Class c);

  • The operation can't be completed because an unexpected error occurred (error code -8058).

    Hi Everyone,
    I am keep getting this error when I try to copy a file or folder to my desktop even though I can create a new folder on desktop. I have tried copying a single file and folder with multily files in it but still getting same error.
    I have multiple machines (Mac Pro) which are giving me same error and all of them has same Lion OS X (10.7.4). I have repaired the disk permissions but that would not fix this issue.
    Any suggestions/ideas/thoughts ?
    Thanks,

    Unlike the original Mac OS, Mac OS X has a system of preference storage that involves a programmer-friendly, user unfriendly construct, the plist. Plist is short for "property list".
    With fairly regular frequency, these preference files or "plists" get corrupted under Mac OS X. Worse, the corruption is largely undetectable with plists. This means that the plist file can become corrupted, the operating system facilities can't tell, the application tried to read the plist and digest the data, the corrupted data gets into the app, the app malfunctions, no clue as to why except some crazy error code that was eventually generated within the app because of an operation that went bad because a long time before, there was undetectable garbage read in from the plist file.
    Ok, here is the good news. The preferences or plist files can be deleted and the worst case is that you lose some of your app settings you modified, usually through the "Preferences" menu item under the menu named after the app. In this case the menu is named "Finder" and the item is "Preferences".
    By deleting the file, you remove the corruption, the app (Finder) recreated a default plist the next time it is run (for Finder, that typically means reboot unless you do some command line work). New plist is clean, you can reset the preferences, Finder is ok until it happens again.
    I posted my solution because it was the third time it had happened to me last year and figured others were having the same issue, and the same frustration with "google it" style answers ;-)
    But before you go looking for an app that helps you detect corrupt plists, know that I have never had any of them work due to how the plist is designed. It has been a manual (and regular) effort since the inception of Mac OS X. This is one of the system's Achilles heals. 

  • Changed file directory path on new drive...how do I import my music and playlist?

    Previously I had relocated my iTunes library successfully to an internal secondary drive on my old PC.  Years later, my PC crashed and i had to reinstall everything, also upgraded from xp to Win7.  Due to preference' storage, I installed iTunes (v11) onto my c drive, but want my iTunes library on my secondary d drive. Should mention that I was able to saved all my iTunes music and apps from the crash.  So I installed iTunes on c drive.  Obligatory iTunes media file was installed by program default into my music, of which I deleted.  I opened iTunes and set media file path in advanced setting to d:\itunes, which is the folder that I have prior sub folders for music, apps, TV, movies, etc with xls and itl file as was previous before crash.  Closed and reopened iTunes. Did not recognize library.  So then I moved xls and itl file out of the folder to desktop, closed and reopened.  Recognized some music, and wanted me to download from the cloud music that was physically in the folder.  No apps recognized. Wanted me to turn on home sharing, which I don't think will work in my case as I have no oither computers running itunes .  as there was no option to import a library in v11, I deleted this version.  Next, I installed version 9 from apple support site.  Again deleted iTunes media folder (empty) set by default in my music on c drive.  Set file path in. ITunes advanced tab to d:\itunes as previous, where library is now located.  Then imported xls file in iTunes folder on d drive through library tab.  This worked to a point.   All music in iTunes music folder and playlists were now showing in iTunes.  Apps are not.  Yes, have app tab checked.  Also, when xls file was imported, new iTunes media file folder was recreated in my music on c drive, and duplicate copies of all music files imported from original music folder on d drive were created within the iTunes folder on d drive.  Clarification: my library is set up on d drujve as such: have a main iTunes folder, then sepereate subfloders for TV, music, apps, books, etc., versus having a iTunes media folder containing all these separate subfolders.  So you can imagine, had original music files in music folder, and then had duplicate music files created in the original iTunes folder intermixed with music, app, books sub folders as a result of this step.  Also tried placing music, books, app folders into a media sub folder, with no change.  Never even got to step of syncing ipad.  Just trying to re establish previously working library.  Sorry so long a message.  Stumped.  Help!

    Copy the entire iTunes folder from the old computer to the new computer.

  • Flash audio not working in Firefox 31.0

    Flash audio works in Chromium. Have tried the following with no success:
    - Resetting Firefox
    - Reinstalling Flash plugin
    Thanks for taking your time to help me out.
    EDIT:
    I noticed in about:plugins a listing for "FutureSplash Player". Perhaps that has something to do with the problem?

    On Linux Adobe has stopped supporting Flash for Firefox.
    There are only security updates of Flash 11.2 available.
    If web pages require a more recent Flash version then they won't work with Firefox and you would have to use Google Chrome.
    Does this happen with all pages that use the Flash plugin?
    Did you check if the player has a volume slider?
    You can check for issues with cookies and "Remove Cookies" from sites causing problems:
    *Edit > Preferences > Privacy > "Use custom settings for history" > Cookies: "Show Cookies"
    You can try to clear the Flash local storage and settings.
    Abode Flash Player Preferences: Storage
    Flash Website Storage Settings panel:
    *http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager07.html
    Global Storage Settings Panel:
    *http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html

  • Cannot create file

    Hi.. I'm a beginner on J2ME. Now i'm trying to make an application using JSR-75 and when i try to make a file, there's an error message:
    java.io.IOException: Root is not accessible
         at com.sun.midp.io.j2me.file.Protocol.ensureConnected(+47)
         at com.sun.midp.io.j2me.file.Protocol.ensureOpenAndConnected(+21)
         at com.sun.midp.io.j2me.file.Protocol.create(+8)
         at JCompression.encode(+110)
         at JCompression$2.run(+26)
    What's wrong with that? Please help me..
    Here's my source code:
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.lcdui.Image;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Alert;
    import javax.microedition.lcdui.AlertType;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Form;
    import javax.microedition.lcdui.TextBox;
    import javax.microedition.lcdui.TextField;
    import javax.microedition.lcdui.List;
    import javax.microedition.lcdui.StringItem;
    import javax.microedition.lcdui.Ticker;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.util.Enumeration;
    import javax.microedition.io.file.*;
    import javax.microedition.io.Connector;
    public class JCompression extends MIDlet implements CommandListener
         private String currDirName;
         private final static String MEGA_ROOT="/";
         private final static String UP_DIRECTORY = "..";
         private final static char   SEP = '/';
         private final static String SEP_STR = "/";
         private final static String EXTENSI = ".jcf";
         private Image directoryIcon, fileIcon, compressedIcon;
         private Image[] iconList;
         private Command view = new Command("View", Command.ITEM, 1);
         private Command prop = new Command("Properties", Command.ITEM, 2);
         private Command compress = new Command("Compress", Command.ITEM, 3);
         private Command uncompress = new Command("Uncompress", Command.ITEM, 4);
         private Command back = new Command("Back", Command.BACK, 2);
         private Command exit = new Command("Exit", Command.EXIT, 3);
         public JCompression()
              currDirName = MEGA_ROOT;
              try
                   directoryIcon = Image.createImage("/icons/dir.png");
              catch (IOException ioe)
                   directoryIcon = null;
              try
                   fileIcon = Image.createImage("/icons/file.png");
              catch (IOException ioe)
                   fileIcon = null;
              try
                   compressedIcon = Image.createImage("/icons/compress.png");
              catch (IOException ioe)
                   compressedIcon = null;
              iconList = new Image[] {directoryIcon, fileIcon, compressedIcon};
         public void startApp()
              try
                   showCurrDir();
              catch(SecurityException e)
                   Alert myAlert = new Alert("Error", "Anda tidak diberi hak untuk mengakses", null, AlertType.ERROR);
                   myAlert.setTimeout(Alert.FOREVER);
                   Form myForm = new Form("Tidak dapat mengakses FileConnection");
                   myForm.append("Anda tidak dapat menjalankan MIDlet ini dengan izin yang ada saat ini.\n"
                                    + "Beri izin pada MIDlet suite, atau jalankan dengan security domain yang berbeda");
                   myForm.addCommand(exit);
                   myForm.setCommandListener(this);
                   Display.getDisplay(this).setCurrent(myAlert, myForm);
              catch(Exception e)
                   e.printStackTrace();
         public void pauseApp()
         public void destroyApp(boolean b)
              notifyDestroyed();
         public void commandAction(Command c, Displayable d)
              if (c == view)
                   List curr = (List) d;
                   final String currFile = curr.getString(curr.getSelectedIndex());
                   new Thread(new Runnable() {
                        public void run() {
                             if (currFile.endsWith(SEP_STR) || currFile.equals(UP_DIRECTORY)) {
                                  traverseDirectory(currFile);
                             } else {
                                  showFile(currFile); // show file contents
                   }).start();
              else if (c == prop)
                   List curr = (List) d;
                   final String currFile = curr.getString(curr.getSelectedIndex());
                   //showProperties(currFile);
              else if (c == compress)
                   List curr = (List) d;
                   final String currFile = curr.getString(curr.getSelectedIndex());
                   new Thread(new Runnable() {
                        public void run() {
                             if (currFile.endsWith(SEP_STR)) {
                                  // Do nothing
                             } else {
                                  encode(currFile);
                   }).start();
              else if (c == uncompress)
                   List curr = (List) d;
                   final String currFile = curr.getString(curr.getSelectedIndex());
                   new Thread(new Runnable() {
                        public void run() {
                             if (currFile.endsWith(EXTENSI)) {
                                  decode(currFile);                              
                             } else {
                                  // Do nothing
                   }).start();
              else if (c == back)
                   showCurrDir();
              else if (c == exit)
                   destroyApp(false);
         void showCurrDir()
              Enumeration e;
              FileConnection currDir = null;
              List browser;
              Ticker myTicker = new Ticker("");
              try
                   if (MEGA_ROOT.equals(currDirName))
                        e = FileSystemRegistry.listRoots();
                        browser = new List(currDirName, List.IMPLICIT);
                        myTicker.setString("Address: [ Roots ]");
                   else
                        currDir = (FileConnection) Connector.open("file://localhost/" + currDirName);
                        e = currDir.list();
                        browser = new List(currDirName, List.IMPLICIT);
                        browser.append(UP_DIRECTORY, directoryIcon);
                        myTicker.setString("Address: [ file:///" + currDirName + " ]");
                   while(e.hasMoreElements())
                        String fileName = (String) e.nextElement();
                        if (fileName.charAt(fileName.length()-1) == SEP)
                             // This is directory
                             browser.append(fileName, directoryIcon);
                        else if (fileName.endsWith(EXTENSI))
                             // This is compressed file
                             browser.append(fileName, compressedIcon);
                        else
                             // This is regular file
                             browser.append(fileName, fileIcon);
                   browser.setTicker(myTicker);
                   browser.addCommand(view);
                   browser.addCommand(prop);
                   browser.addCommand(compress);
                   browser.addCommand(uncompress);
                   browser.addCommand(exit);
                   browser.setSelectCommand(view);
                   browser.setCommandListener(this);
                   Display.getDisplay(this).setCurrent(browser);
                   if (currDir != null)
                        currDir.close();
              catch (IOException ioe)
                   ioe.printStackTrace();
         void traverseDirectory(String fileName)
              if (currDirName.equals(MEGA_ROOT))
                   if(fileName.equals(UP_DIRECTORY))
                        // can not go up from MEGA_ROOT
                        return;
                   currDirName = fileName;
              else if (fileName.equals(UP_DIRECTORY))
                   // go up one directory
                   int i = currDirName.lastIndexOf(SEP, currDirName.length()-2);
                   if (i != -1)
                        currDirName = currDirName.substring(0, i+1);
                   else
                        currDirName = MEGA_ROOT;
              else
                   currDirName = currDirName + fileName;
              showCurrDir();
        void showFile(String fileName) {
            try {
                             FileConnection fc = (FileConnection)
                                       Connector.open("file://localhost/" + currDirName + fileName);
                     if (!fc.exists()) {
                         throw new IOException("File does not exists");
                     InputStream fis = fc.openInputStream();
                     byte[] b = new byte[1024];
                     int length = fis.read(b, 0, 1024);
                             fis.close();
                             fc.close();
                             TextBox viewer = new TextBox("View File: " + fileName, null, 1024,
                                                                               TextField.ANY | TextField.UNEDITABLE);
                     viewer.addCommand(back);
                     viewer.addCommand(exit);
                     viewer.setCommandListener(this);
                     if (length > 0) {
                         viewer.setString(new String(b, 0, length));
                     Display.getDisplay(this).setCurrent(viewer);
            } catch (Exception e) {
                Alert alert = new Alert("Error!", "Can not access file " + fileName
                                              + " in directory " + currDirName + "\nException: "
                                              + e.getMessage(), null, AlertType.ERROR);
                alert.setTimeout(Alert.FOREVER);
                Display.getDisplay(this).setCurrent(alert);
         void encode(String fileName)
              final int high, low, codeRange, highRange, lowRange;
              try
                   String fOutName = "fileOutput";
                   FileConnection fc = (FileConnection) Connector.open("file://localhost/"
                                                                                               + currDirName + fileName);
                   FileConnection fOut = (FileConnection) Connector.open("file:///localhost/"
                                                                                              + currDirName + fOutName);
                   if (!fc.exists())
                        throw new IOException("File does not exists");
                   if (!fOut.exists())
                        fOut.create();
                   DataInputStream dis = fc.openDataInputStream();
                   DataOutputStream dos = fc.openDataOutputStream();
                   int ukuran = dis.available();
                   byte[] b = new byte[ukuran];
    //               int tmp = fis.read(b, 0, ukuran);
                   dis.close(); dos.close();
                   fc.close(); fOut.close();
              catch(Exception e)
                   e.printStackTrace();
         void decode(String fileName)
    }Please help me, because i must finish this project as fast as i can. Thank you..

    Sorry for the late reply.
    I've found my mistake a few days ago. I write more slash in it. It's:
    FileConnection fOut = (FileConnection) Connector.open("file:///localhost/"+ currDirName + fOutName);
    But i want to ask you, you wrote:
    "Go to Edit->Preferences->Storage tab and Empty all 3 fields(specially 1st field)"
    What it used for? When i checked it, it's all empty.
    Thank you for your time and help. :)

  • Setting the file system size for the emulator

    Hi,
    I am trying to set the file system size of the emulator so I can test what happens when the system is full and I try to write to the file system. I am using WTK 2.5.1 and I went into preferences -> storage and set Storage size to 10KB. But when I run the emulator and check the available size of the root directories using:
    try {
             Enumeration roots = FileSystemRegistry.listRoots();
             while (roots.hasMoreElements()) {
                String dir = (String) roots.nextElement();
                FileConnection fc = (FileConnection) Connector.open( "file:///" + dir );
                System.out.println( "Available Size on " + dir + " : "+ fc.availableSize());
                fc.close();
          } catch ( IOException ex ) {
             ex.printStackTrace();
    }I get the remaining size of my pc's hard drive, not what is remaining from the 10KB I set.
    Can you tell me the correct way to do this? I don't want to fill up my pc's hard drive in order to test this!!

    Has anyone got an answer to this?

  • How does customization form pass parameters?

    I need to create my own customization form so it can include linked LOVs and was wondering how the default customization form passed the LOV values back to the calling component.
    I put two copies of the same report on a page and called the customization form for each report selecting different LOV values. Since each report displays the correct results based on the LOV, I assume page parameters are not being used and neither is p_arg_values/p_arg_values.
    Can anyone tell me how this information is being passed to the individual reports?
    Thanks, Larry

    Sharmila,
    I guess I'm confused, the parameters that are selected on the Customization screen are persistent across different login sessions.
    Is is my understanding that passing parameters via p_arg_names/p_arg_values on the URL would not carry over from one logon to another or even allow me to navigate to another page and then back to the "customized" screen and still have the customizated values applicable?
    Are you saying that once I call a page and pass a name/value parameter pair to the page, that the paramter values remain in affect for subsequent calls to the same page where the name/value pair isn't being passed?
    Doesn't the customization screen use the wwpre_api_name and wwpre_api_value methods to pass parameters to components located on a page via the user preference storage?
    When I look at the URL associated with the customization link on my portlets I see the preference_path being passed to the customization form.
    Larry

  • Cleaning cookies ? Some of my old pictures are missing ?

    Hello,
    I feel that my iMac is suddenly slow.
    I have heard that cleaning up the cookies would help.
    So not knowing how to do it, I went to History and click on "Clear History"
    thinking it would works its magic.
    Some of my old pictures are now missing ?
    Please tell me the "how to" to speed the iMac
    and....  that these pictures are not gone forever. thank you
    LisaNic

    I don't think cleaning cookies will speed up your mac.  But just so you know, Safari preferences, Security, Show Cookies.  From there you can clear all the cookies or do it selectively.
    For flash cookies use the Flash Player system preference, Storage, delete all or selectively with eh local storage settings by site.
    Can't help with the pictures.  Clearing history in a browser shouldn't do anything other that just clear where you visited in that browser.
    As for speeding up, repair/verify your drives with Disk Utility.  Make sure you reserve at least 20GB to 25GB for the OS and it's data space.  Run Activity Monitor (in Utilities) and see if there are any processes hogging the cpu and also use it as a guide to decide if you need more ram.
    Using Activity Monitor to read System Memory and determine how much RAM is being used

  • Cannot perform export operation

    I am trying to export a table (Oracle 8.1.6, iAS 1.0.2) , but I get the following error:
    Could not find the preference storage for temporary directory. Cannot perform export operation. Contact the administrator. (WWV-17101)
    When I try to export an application and I 'Click here to download the export script file (2618 bytes). ', the browser shows a url of http://schmidm-zx/pls/portal30/docs/313.sql, however, this file doesn't exist anywhere on the machine.
    What is going on?
    null

    Martin,
    Export/Import of Tables is different from other exports(application/component/database objects)
    All the other exports generate a sql script however export of table generates a dump file.
    For import of components you need to run sql script from sql plus, however for import of table you need to run Oracle Imp utility.
    For export of table alone, you need to specify the temporary directory with sufficient privileges in global settings.
    For ex in unix machines it can be /var/tmp and for NT machines it can be c:\temp directories.

  • Reg: how to customize a java file

    Hi,
    I have a requirement where i need to modify the message which is right now being thrown on one of the seeded page.
    So for that i identified the place from where it is being thrown. It is from AccountHelper.java which is one of the standard page. So how to extend this and also how to tell the application that it needs to refer this new file instead of the standard one.
    Thanks,

    Hi Jens,
    There are a couple of PDK articles and samples that cover this
    topic:
    A Primer on End-User Personalization
    http://portalstudio.oracle.com/pls/ops/docs/FOLDER/COMMUNITY/PDK/
    articles/primer.preference.storage.html
    How to Add Customization to your Java Portlet:
    http://portalstudio.oracle.com/pls/ops/docs/FOLDER/COMMUNITY/PDK/
    articles/adding.customization.html
    JSP Services Portlet
    HelloWorld Java Portlet
    You can also watch two recorded online eSeminars on Java portlet
    development at http://portalstudio.oracle.com/servlet/page?
    pageid=832&dad=ops&_schema=OPSTUDIO
    PDK-Java
    Building Java Portlets
    Finally, it's worth to check out the portlets in the Community
    Contributions section, as some of those demonstrate how to
    implement portlet customization.
    Peter

  • How to customize a Java Portlet

    Hi!
    I'm writing a portlet in Java, with functionality I can't get
    out of the standard Portal components.
    This portlet will be used at a couple of different places, and
    woiuld need to be differently initialized depending on where
    it's used, but I haven't found a way to do that yet.
    For a standard portlet, say a report, I can have bind variables
    that can be configured through the portlets customization menu.
    Is that possible to do with a Java portlet, and if it is, how is
    it done?
    ///Yours, Jens Carlberg

    Hi Jens,
    There are a couple of PDK articles and samples that cover this
    topic:
    A Primer on End-User Personalization
    http://portalstudio.oracle.com/pls/ops/docs/FOLDER/COMMUNITY/PDK/
    articles/primer.preference.storage.html
    How to Add Customization to your Java Portlet:
    http://portalstudio.oracle.com/pls/ops/docs/FOLDER/COMMUNITY/PDK/
    articles/adding.customization.html
    JSP Services Portlet
    HelloWorld Java Portlet
    You can also watch two recorded online eSeminars on Java portlet
    development at http://portalstudio.oracle.com/servlet/page?
    pageid=832&dad=ops&_schema=OPSTUDIO
    PDK-Java
    Building Java Portlets
    Finally, it's worth to check out the portlets in the Community
    Contributions section, as some of those demonstrate how to
    implement portlet customization.
    Peter

  • Unable to save current orgchart

    Hi,
    We are using OrgChart 3.0 SP1
    I get the following warning when I try to save current orgchart and there aren't any other previously saved items.
    "You have exceeded the maximum number of saved items for your user profile. Remove a previously saved item before saving a new one."
    Is this because we're using "Store user preferences in cookie" as the user preference storage option and the maximum size for cookies is 4KB?
    Is there a way to change the maximum size for cookies? We're not able to save any of the orgcharts when they're expanded.
    Thanks!

    The 4Kb limitation is a browser one, not a Nakisa one.
    (link: [http://stackoverflow.com/questions/640938/what-is-the-maximum-size-of-a-web-browsers-cookies-key])
    Ideally, you should look to store user preferences in a DB but of course this requires some tablespace (somewhere).  Using a DB offers advantages on size and also means preferences are available wherever you log in (as opposed to cookie which is stored on a local PC).  Also if you are in a Citrix env then cookies don't "travel" with you between Citrix app servers which causes the user to get strange behaviour.
    Stephen

Maybe you are looking for