Tracing of T-Code

Hi
Can anyone please tell me , if any user is saying that i am facing problem with T-code (either both customizing and normal) , it take long time for executing.So how i can proceed and look for that particular T-code.
Regards
Brijesh Prasad

Using ST03 (workload monitor) you could check the performance of the particular transaction.
In the transaction profile check out the average response time.  Of course this doesn't resolve any issue, but it will clarify if there actually is one or not!

Similar Messages

  • Tracing of QR code (png picture) into a vector

    Hello
    I'm using Illustrator CS5 and I would like to trace the QR code I have (72 dpi) into a vector shape. I tried to use the tracing option of illustrator, but at some points the lines are kind of rounded, and I'm afraid it won't be readable in QR code scanners (I tried to use all the presets). Is there another way to make sure it would trace it perfectly? After all it's a very simple shape. I'm attaching the original code and the way it presents after tracing.
    Thank you
    Tom

    Start with the Black & White Logo autotrace preset. Then open the options dialog and set Path Fitting to zero. Expand the trace. Apply Object>Path>Simplify, with Straight Lines on and Angle Threshold set to 90.
    But...why do you want to do this in the first place? A 1-bit raster image consisting of nothing but square shapes is just as scaleable (effectively "resolution independent") as its vector equivalent.
    JET

  • Finding the source code from Jar file

    Hi,
    I am a beginner java programmer but have been entrusted with learning our company's Java application. The architect of the application is not forthcoming in sharing information and so I need help in tracing the source code for the application. I know where the .jar files are stored but I don't know where the actual .java or .class files are stored.
    In the .profile file, I see the classpaths set to various jar files. eg.
    CLASSPATH=$PATH:/eaid01_apps/merc01/libs/tools/java/drivers/bin/eaiRun.jar
    When I view this jar file with command "jar tf eaiRun.jar", it displays all the files under it. Onc such listing is as following:
    citi/eai/EAI.class
    citi/eai/Interface.class
    I want to go to that specific directory on our file system which is storing these .class or.java file. From what I have learned about packages, I should find some folder called 'citi' ,'eai'.
    However I am not able to find these folders anywhere on file system. Is there a way I can find where the actual souce code is by looking at the jar files.
    Please help. Let me know if you need more information.
    thanks,
    Anand.

    Is there a way I can find where the actual souce code is by looking at the jar files.No, in general you can't, you should ask the architect that you mentioned earlier. The name of the source file is sometimes stored in the .class file for debugging purposes but that's unlikely going to help you find the files.
    You should also ask if he/she has got any documentation of the system. It's often a lot easier to follow documentation written in human language than program code written in a programming language. There could be documentation in a format similar to this: http://java.sun.com/j2se/1.4.2/docs/api/

  • Cannot trace the transaction code within a role

    Hello All,
    We, in our project trying to trace out various transaction codes assigned to each of roles.
    I have an issue tracing an transaction code FB60. When i searched in suim for transaction codes within the role, I could see FB60 listing in the results.
    But when i go to role through pfcg and see in the menu tab i cannot find the transaction code there.
    what went wrong here? Now i want to remove the transaction code from the role so that next time when i use suim it wont be listed in the results.
    Kindly advice.
    Regards,
    Brahmeshwar Poloju

    HERE IS THE OUTPUT.
    OBJECT     AUTH         VARIANT FIELD      LOW                                      HIGH
    S_TCODE    T-DC84003900         TCD        SCPE*
    S_TCODE    T-DC84003900         TCD        SDD1*                                    SE03
    S_TCODE    T-DC84003900         TCD        SE07                                     SE16N
    S_TCODE    T-DC84003900         TCD        SE17                                     SECQ*
    S_TCODE    T-DC84003900         TCD        SEEF*                                    SI24_12
    S_TCODE    T-DC84003900         TCD        SI2414                                   SIBU
    S_TCODE    T-DC84003900         TCD        SIC_*                                    SLAT
    S_TCODE    T-DC84003900         TCD        SLG0                                     SLIB_*
    S_TCODE    T-DC84003900         TCD        SLIN                                     SLXT
    S_TCODE    T-DC84003900         TCD        SM30
    S_TCODE    T-DC84003900         TCD        SM31                                     SM37
    S_TCODE    T-DC84003900         TCD        SM50
    S_TCODE    T-DC84003900         TCD        SM51
    S_TCODE    T-DC84003900         TCD        SMAR*                                    SMEZ
    S_TCODE    T-DC84003900         TCD        SMTH*                                    SNLS
    S_TCODE    T-DC84003900         TCD        SNRO                                     SO99
    S_TCODE    T-DC84003900         TCD        SOACARRY*                                SOTR*
    S_TCODE    T-DC84003900         TCD        SP02
    S_TCODE    T-DC84003900         TCD        SCUS*                                    SDCA*
    S_TCODE    T-DC84003900         TCD        /*                                       DA_*
    S_TCODE    T-DC84003900         TCD        DC*                                      PFCF*
    S_TCODE    T-DC84003900         TCD        PFD*                                     RYZ*
    S_TCODE    T-DC84003900         TCD        RZZ*                                     SAIM*
    S_TCODE    T-DC84003900         TCD        SAIO*                                    SAK*
    S_TCODE    T-DC84003900         TCD        SAM*                                     SAPTE*
    S_TCODE    T-DC84003900         TCD        SARJZ*                                   SARTN*
    S_TCODE    T-DC84003900         TCD        SASAPCATT                                SBEA
    S_TCODE    T-DC84003900         TCD        SBI*                                     SC2_*
    S_TCODE    T-DC84003900         TCD        SCA*                                     SCBZ*
    S_TCODE    T-DC84003900         TCD        SCDO                                     SCI*
    S_TCODE    T-DC84003900         TCD        SCTS*                                    SCU3
    S_TCODE    T-DC84003900         TCD        SWF_TR*                                  SYNT
    S_TCODE    T-DC84003900         TCD        SZG*                                     TRBS
    S_TCODE    T-DC84003900         TCD        TRCM*                                    UR_M*
    S_TCODE    T-DC84003900         TCD        USRM*                                    _Z*
    S_TCODE    T-DC84003900         TCD        SWF_CN*                                  SWF_RE
    S_TCODE    T-DC84003900         TCD        SPEC*                                    SPERS*
    S_TCODE    T-DC84003900         TCD        SPP*                                     SPROJE
    S_TCODE    T-DC84003900         TCD        SQ00                                     SRT*
    S_TCODE    T-DC84003900         TCD        SSC                                      SSDZ*
    S_TCODE    T-DC84003900         TCD        SST0                                     ST05*
    S_TCODE    T-DC84003900         TCD        ST14                                     ST62
    S_TCODE    T-DC84003900         TCD        STCU                                     STKZ*
    S_TCODE    T-DC84003900         TCD        SV*                                      SWF_BA
    S_TCODE    T-DC84003900         TCD        SURAD                                    SURVEY
    S_TCODE    T-DC84003900         TCD        SU50                                     SU52
    S_TCODE    T-DC84003900         TCD        SU3
    S_TCODE    T-DC84003900         TCD        SU2
    S_TCODE    T-DC84003900         TCD        SU0
    S_TCODE    T-DC84003900         TCD        STS*                                     STYLE*
    Regards

  • Source Code help!!!!!

    Hi everyone,
    I have a problem in tracing back my codes, which I have been working on for sometime. Since I have the benefit of time, I am actually looking thru some codes, (developed by ancestors of the co.), and I am unable to derive the output....Its relatively complicated as its reading the value located in the i18nGB.properties file and displaying the output.
    The value is shown correctly but I have no idea how to understand how it works....
    package com.embrace.ehrms.dao.ecc;
    import com.embrace.ehrms.dao.common.AbstractSearchECCEmployee;
    import com.embrace.ehrms.context.Context;
    public class SearchEmployeeECCList extends AbstractSearchECCEmployee
         public SearchEmployeeECCList(Context ctx)
             super(ctx);
        public String getTitle(){return "Title.ECC";
    }My doubt lies in "Title.ECC" prints the word Employee Centre....which is found in i18nGB.properties....How do I trace back the functionality of calling it?
    in i18nGB.properties, it is like this
    Title.ECC=Employee Centre
    Your help is greatly appreciated.....
    Best Regards

    We need to find out where the getTitle method is being called from.
    If you have a copy of the source, not the production environment, within the get title method, you coule create a new throwable object and then print the stack trace to the standard output.
    This effectivly breaks the system but it will allow the compiler to give you a bunch of errors when ever the method is called.
    Another option would be if you are using an IDE like Netbeans, you could put a break point in that method and then debug the system.
    I am weary of telling you to do either of these because I do not know if you have a development environment that mirrors the production environment. And I dont want you to break something your company depends on.
    It boils down to this... Somewhere in the system, there is an object that instantiates the class you posted. At some point, the getTitle method is called and the result is used to look up a value in a paramater file or property file. And that value is printed out.
    If you are using Netbeans, there is a nice function that will look throughout a project to fina all uses of a method.
    You will have to look through the other code to find out what class is using the class you posted.
    JJ

  • Print module - print to file options

    When creating JPEGs using the Export function of the Library module, Lightroom 4 offers you very detailed control over the export options, including automated rules for the folder/filename structure.
    When creating JPEGs using "print to file" in the Print module, the controls seem to be much more limited. Notably, the folder/filename has to be specified manually for each print job.
    Is there a way to keep (or append to) the original filename when exporting from the Print module, short of typing it in by hand for every single image?
    (For context: My print lab requires that submitted files exactly match the print, pixel-for-pixel, for everything to work correctly. If the file doesn't match, their print driver will scale and crop until it does. So, if I use the Library module's Export function and the aspect ratio of the file is different from that of the closest available paper, two edges may get cropped. Or, in other words, I have to pad the image with white bars to fill the paper's aspect ratio if I want it to print the way I want it to. The Print module creates files that are perfect for my purposes. But, since I can't figure out how to get it to keep the filename, the back print data on the paper copies- which I will need 8 years later to find the original when a re-print is ordered- is useless.)

    Thanks Effeegee. At your suggestion, I tried LR/Mogrify + ImageMagick and, with a bit of tweaking, it does exactly what I need (and far more efficiently than LR4 Print).
    For other users' reference, the LR/Mogrify configuration to do this is:
    In Lightroom Library -> Export, LR/Mogrify adds "Post-Process Actions". Turn on "Background Canvas" and "Compress to file size".
    Under the regular "Image Sizing" control, turn on "Resize to Fit: Dimensions" and set the paper size (long side first) and printer resolution. This resizes the image to fit within the specified paper size.
    Under "Mogrify Canvas", set the paper size again (in pixels, long side first), and turn on "Adjust for landscape/portrait". This pads the image with blank borders to exactly fill the specified paper size.
    Note that if the short side is specified first, LR/Mogrify sometimes pads on all sides....
    To minimize additional JPEG artefacts, I suspect that under Lightroom export's "File Settings" the JPEG quality should be 100 (i.e. negligible loss) and the final compression should be done only after all post-process actions, i.e. use LR/Mogrify's "Compress to given file size". (But don't quote me on that as I haven't traced the actual code path.)

  • BDB vxworks 6.6 kernel port error

    Hello,
    I have Berkeley DB 4.7.25 compiled in kernel. When I try the example in txn_guide.c, I have got the following error:
    Error opening environment: S_dosFsLib_FILE_NOT_FOUND
    I'm all done.
    value = 10 = 0xa
    I traced the source code it fails in __rep_reset_init() when it tries to open file __db.rep.init. How can I fix this? Thanks.
    Allan
    #ifdef HAVE_REPLICATION
              if ((ret = __rep_reset_init(env)) != 0 ||
              (ret = __env_remove_env(env)) != 0 ||
    #else
    Have I missed anything? Thanks.
    /* File: txn_guide.c */
    /* We assume an ANSI-compatible compiler */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <db.h>
    #ifdef _WIN32
    #include <windows.h>
    #define     PATHD '\\'
    extern int getopt(int, char * const *, const char *);
    extern char *optarg;
    typedef HANDLE thread_t;
    #define     thread_create(thrp, attr, func, arg) \
    (((*(thrp) = CreateThread(NULL, 0, \
         (LPTHREAD_START_ROUTINE)(func), (arg), 0, NULL)) == NULL) ? -1 : 0)
    #define     thread_join(thr, statusp) \
    ((WaitForSingleObject((thr), INFINITE) == WAIT_OBJECT_0) && \
    GetExitCodeThread((thr), (LPDWORD)(statusp)) ? 0 : -1)
    typedef HANDLE mutex_t;
    #define     mutex_init(m, attr) \
    (((*(m) = CreateMutex(NULL, FALSE, NULL)) != NULL) ? 0 : -1)
    #define     mutex_lock(m) \
    ((WaitForSingleObject(*(m), INFINITE) == WAIT_OBJECT_0) ? 0 : -1)
    #define     mutex_unlock(m) (ReleaseMutex(*(m)) ? 0 : -1)
    #else
    #include <pthread.h>
    #include <unistd.h>
    #define     PATHD '/'
    typedef pthread_t thread_t;
    #define     thread_create(thrp, attr, func, arg) \
    pthread_create((thrp), (attr), (func), (arg))
    #define     thread_join(thr, statusp) pthread_join((thr), (statusp))
    typedef pthread_mutex_t mutex_t;
    #define     mutex_init(m, attr) pthread_mutex_init((m), (attr))
    #define     mutex_lock(m) pthread_mutex_lock(m)
    #define     mutex_unlock(m) pthread_mutex_unlock(m)
    #endif
    /* Run 5 writers threads at a time. */
    #define     NUMWRITERS 5
    * Printing of a thread_t is implementation-specific, so we
    * create our own thread IDs for reporting purposes.
    int global_thread_num;
    mutex_t thread_num_lock;
    /* Forward declarations */
    int count_records(DB *, DB_TXN *);
    int open_db(DB **, const char *, const char *, DB_ENV *, u_int32_t);
    int usage(void);
    void writer_thread(void );
    /* Usage function */
    int
    usage()
    fprintf(stderr, " [-h <database_home_directory>]\n");
    return (EXIT_FAILURE);
    #if 0
    int
    main(int argc, char *argv[])
    /* Initialize our handles */
    DB *dbp = NULL;
    DB_ENV *envp = NULL;
    thread_t writer_threads[NUMWRITERS];
    int ch, i, ret, ret_t;
    u_int32_t env_flags;
    char *db_home_dir;
    /* Application name */
    const char *prog_name = "txn_guide";
    /* Database file name */
    const char *file_name = "mydb.db";
    /* Parse the command line arguments */
    #ifdef _WIN32
    db_home_dir = ".\\";
    #else
    db_home_dir = "./";
    #endif
    while ((ch = getopt(argc, argv, "h:")) != EOF)
         switch (ch) {
         case 'h':
         db_home_dir = optarg;
         break;
         case '?':
         default:
         return (usage());
    #endif
    void myDbTest(char *home)
         /* Initialize our handles */
         DB *dbp = NULL;
         DB_ENV *envp = NULL;
         thread_t writer_threads[NUMWRITERS];
         int ch, i, ret, ret_t;
         u_int32_t env_flags;
         char *db_home_dir;
         /* Application name */
         const char *prog_name = "txn_guide";
         /* Database file name */
         const char *file_name = "mydb.db";
         /* Parse the command line arguments */
         #ifdef _WIN32
         db_home_dir = ".\\";
         #else
         db_home_dir = "./";
         #endif     
    db_home_dir = home;
    /* Create the environment */
    ret = db_env_create(&envp, 0);
    if (ret != 0) {
         fprintf(stderr, "Error creating environment handle: %s\n",
         db_strerror(ret));
         goto err;
    * Indicate that we want db to perform lock detection internally.
    * Also indicate that the transaction with the fewest number of
    * write locks will receive the deadlock notification in
    * the event of a deadlock.
    ret = envp->set_lk_detect(envp, DB_LOCK_MINWRITE);
    if (ret != 0) {
         fprintf(stderr, "Error setting lock detect: %s\n",
         db_strerror(ret));
         goto err;
    envp->set_shm_key(envp, 10);
    env_flags =
    DB_CREATE | /* Create the environment if it does not exist */
    DB_RECOVER | /* Run normal recovery. */
    DB_INIT_LOCK | /* Initialize the locking subsystem */
    DB_INIT_LOG | /* Initialize the logging subsystem */
    DB_INIT_TXN | /* Initialize the transactional subsystem. This
                   * also turns on logging. */
    DB_INIT_MPOOL | /* Initialize the memory pool (in-memory cache) */
    DB_THREAD; /* Cause the environment to be free-threaded */
    /* Now actually open the environment */
    ret = envp->open(envp, db_home_dir, env_flags, 0);
    if (ret != 0) {
         fprintf(stderr, "Error opening environment: %s\n",
         db_strerror(ret));
         goto err;
    * If we had utility threads (for running checkpoints or
    * deadlock detection, for example) we would spawn those
    * here. However, for a simple example such as this,
    * that is not required.
    /* Open the database */
    ret = open_db(&dbp, prog_name, file_name,
    envp, DB_DUPSORT);
    if (ret != 0)
         goto err;
    /* Initialize a mutex. Used to help provide thread ids. */
    (void)mutex_init(&thread_num_lock, NULL);
    /* Start the writer threads. */
    for (i = 0; i < NUMWRITERS; i++)
         (void)thread_create(
         &writer_threads, NULL, writer_thread, (void *)dbp);
    /* Join the writers */
    for (i = 0; i < NUMWRITERS; i++)
         (void)thread_join(writer_threads[i], NULL);
    err:
    /* Close our database handle, if it was opened. */
    if (dbp != NULL) {
         ret_t = dbp->close(dbp, 0);
         if (ret_t != 0) {
         fprintf(stderr, "%s database close failed: %s\n",
              file_name, db_strerror(ret_t));
         ret = ret_t;
    /* Close our environment, if it was opened. */
    if (envp != NULL) {
         ret_t = envp->close(envp, 0);
         if (ret_t != 0) {
         fprintf(stderr, "environment close failed: %s\n",
              db_strerror(ret_t));
              ret = ret_t;
    /* Final status message and return. */
    printf("I'm all done.\n");
    return (ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
    * A function that performs a series of writes to a
    * Berkeley DB database. The information written
    * to the database is largely nonsensical, but the
    * mechanism of transactional commit/abort and
    * deadlock detection is illustrated here.
    void *
    writer_thread(void *args)
    static char *key_strings[] = {
         "key 1", "key 2", "key 3", "key 4", "key 5",
         "key 6", "key 7", "key 8", "key 9", "key 10"
    DB *dbp;
    DB_ENV *envp;
    DBT key, value;
    DB_TXN *txn;
    int i, j, payload, ret, thread_num;
    int retry_count, max_retries = 20; /* Max retry on a deadlock */
    dbp = (DB *)args;
    envp = dbp->get_env(dbp);
    /* Get the thread number */
    (void)mutex_lock(&thread_num_lock);
    global_thread_num++;
    thread_num = global_thread_num;
    (void)mutex_unlock(&thread_num_lock);
    /* Initialize the random number generator */
    srand(thread_num);
    /* Write 50 times and then quit */
    for (i = 0; i < 50; i++) {
         retry_count = 0; /* Used for deadlock retries */
         * Some think it is bad form to loop with a goto statement, but
         * we do it anyway because it is the simplest and clearest way
         * to achieve our abort/retry operation.
    retry:
         /* Begin our transaction. We group multiple writes in
         * this thread under a single transaction so as to
         * (1) show that you can atomically perform multiple writes
         * at a time, and (2) to increase the chances of a
         * deadlock occurring so that we can observe our
         * deadlock detection at work.
         * Normally we would want to avoid the potential for deadlocks,
         * so for this workload the correct thing would be to perform our
         * puts with autocommit. But that would excessively simplify our
         * example, so we do the "wrong" thing here instead.
         ret = envp->txn_begin(envp, NULL, &txn, 0);
         if (ret != 0) {
         envp->err(envp, ret, "txn_begin failed");
         return ((void *)EXIT_FAILURE);
         for (j = 0; j < 10; j++) {
         /* Set up our key and values DBTs */
         memset(&key, 0, sizeof(DBT));
         key.data = key_strings[j];
         key.size = (u_int32_t)strlen(key_strings[j]) + 1;
         memset(&value, 0, sizeof(DBT));
         payload = rand() + i;
         value.data = &payload;
         value.size = sizeof(int);
         /* Perform the database put. */
         switch (ret = dbp->put(dbp, txn, &key, &value, 0)) {
              case 0:
              break;
              * Our database is configured for sorted duplicates,
              * so there is a potential for a KEYEXIST error return.
              * If we get one, simply ignore it and continue on.
              * Note that you will see KEYEXIST errors only after you
              * have run this program at least once.
              case DB_KEYEXIST:
              printf("Got keyexists.\n");
              break;
              * Here's where we perform deadlock detection. If
              * DB_LOCK_DEADLOCK is returned by the put operation,
              * then this thread has been chosen to break a deadlock.
              * It must abort its operation, and optionally retry the
              * put.
              case DB_LOCK_DEADLOCK:
              * First thing that we MUST do is abort the
              * transaction.
              (void)txn->abort(txn);
              * Now we decide if we want to retry the operation.
              * If we have retried less than max_retries,
              * increment the retry count and goto retry.
              if (retry_count < max_retries) {
                   printf("Writer %i: Got DB_LOCK_DEADLOCK.\n",
                   thread_num);
                   printf("Writer %i: Retrying write operation.\n",
                   thread_num);
                   retry_count++;
                   goto retry;
              * Otherwise, just give up.
              printf("Writer %i: ", thread_num);
              printf("Got DB_LOCK_DEADLOCK and out of retries.\n");
              printf("Writer %i: Giving up.\n", thread_num);
              return ((void *)EXIT_FAILURE);
              * If a generic error occurs, we simply abort the
              * transaction and exit the thread completely.
              default:
              envp->err(envp, ret, "db put failed");
              ret = txn->abort(txn);
              if (ret != 0)
                   envp->err(envp, ret,
                   "txn abort failed");
              return ((void *)EXIT_FAILURE);
         } /** End case statement **/
         } /** End for loop **/
         * print the number of records found in the database.
         * See count_records() for usage information.
         printf("Thread %i. Record count: %i\n", thread_num,
         count_records(dbp, NULL));
         * If all goes well, we can commit the transaction and
         * exit the thread.
         ret = txn->commit(txn, 0);
         if (ret != 0) {
         envp->err(envp, ret, "txn commit failed");
         return ((void *)EXIT_FAILURE);
    return ((void *)EXIT_SUCCESS);
    * This simply counts the number of records contained in the
    * database and returns the result. You can use this function
    * in three ways:
    * First call it with an active txn handle.
    * Secondly, configure the cursor for uncommitted reads (this
    * is what the example currently does).
    * Third, call count_records AFTER the writer has committed
    * its transaction.
    * If you do none of these things, the writer thread will
    * self-deadlock.
    * Note that this function exists only for illustrative purposes.
    * A more straight-forward way to count the number of records in
    * a database is to use DB->stat() or DB->stat_print().
    int
    count_records(DB dbp, DB_TXN txn)
    DBT key, value;
    DBC *cursorp;
    int count, ret;
    cursorp = NULL;
    count = 0;
    /* Get the cursor */
    ret = dbp->cursor(dbp, txn, &cursorp,
         DB_READ_UNCOMMITTED);
    if (ret != 0) {
         dbp->err(dbp, ret,
         "count_records: cursor open failed.");
         goto cursor_err;
    /* Get the key DBT used for the database read */
    memset(&key, 0, sizeof(DBT));
    memset(&value, 0, sizeof(DBT));
    do {
         ret = cursorp->get(cursorp, &key, &value, DB_NEXT);
         switch (ret) {
         case 0:
              count++;
              break;
         case DB_NOTFOUND:
              break;
         default:
              dbp->err(dbp, ret,
              "Count records unspecified error");
              goto cursor_err;
    } while (ret == 0);
    cursor_err:
    if (cursorp != NULL) {
         ret = cursorp->close(cursorp);
         if (ret != 0) {
         dbp->err(dbp, ret,
              "count_records: cursor close failed.");
    return (count);
    /* Open a Berkeley DB database */
    int
    open_db(DB **dbpp, const char progname, const char file_name,
    DB_ENV *envp, u_int32_t extra_flags)
    int ret;
    u_int32_t open_flags;
    DB *dbp;
    /* Initialize the DB handle */
    ret = db_create(&dbp, envp, 0);
    if (ret != 0) {
         fprintf(stderr, "%s: %s\n", progname,
              db_strerror(ret));
         return (EXIT_FAILURE);
    /* Point to the memory malloc'd by db_create() */
    *dbpp = dbp;
    if (extra_flags != 0) {
         ret = dbp->set_flags(dbp, extra_flags);
         if (ret != 0) {
         dbp->err(dbp, ret,
              "open_db: Attempt to set extra flags failed.");
         return (EXIT_FAILURE);
    /* Now open the database */
    open_flags = DB_CREATE | /* Allow database creation */
              DB_READ_UNCOMMITTED | /* Allow dirty reads */
              DB_AUTO_COMMIT; /* Allow autocommit */
    ret = dbp->open(dbp, /* Pointer to the database */
              NULL, /* Txn pointer */
              file_name, /* File name */
              NULL, /* Logical db name */
              DB_BTREE, /* Database type (using btree) */
              open_flags, /* Open flags */
              0); /* File mode. Using defaults */
    if (ret != 0) {
         dbp->err(dbp, ret, "Database '%s' open failed",
         file_name);
         return (EXIT_FAILURE);
    return (EXIT_SUCCESS);

    More information: After I create the DB, DB put works fine. The db_stat is OK.
    After reboot the processor, db_stat gives error. After running db_recover, it gives errors.
    Before reboot:
    -> ls
    CfgDbEr.log
    __db.001
    log.0000000001
    OpvCfg.db
    value = 0 = 0x0
    -> db_stat "-h /bk1/db -d OpvCfg.db"
    THU AUG 14 18:12:23 2008 Local time
    53162 Btree magic number
    9 Btree version number
    Big-endian Byte order
    Flags
    2 Minimum keys per-page
    4096 Underlying database page size
    1007 Overflow key/data size
    1 Number of levels in the tree
    1 Number of unique keys in the tree
    1 Number of data items in the tree
    0 Number of tree internal pages
    0 Number of bytes free in tree internal pages (0% ff)
    1 Number of tree leaf pages
    4058 Number of bytes free in tree leaf pages (0% ff)
    0 Number of tree duplicate pages
    0 Number of bytes free in tree duplicate pages (0% ff)
    0 Number of tree overflow pages
    0 Number of bytes free in tree overflow pages (0% ff)
    0 Number of empty pages
    0 Number of pages on the free list
    value = 0 = 0x0
    After reboot, it points out error:segment /bk1/db/__db.001 does not exist
    -> db_stat "-h /bk1/db -d OpvCfg.db"
    db_stat: segment /bk1/db/__db.001 does not exist
    THU JAN 01 00:01:32 1970 Local time
    53162 Btree magic number
    9 Btree version number
    Big-endian Byte order
    Flags
    2 Minimum keys per-page
    4096 Underlying database page size
    1007 Overflow key/data size
    1 Number of levels in the tree
    1 Number of unique keys in the tree
    1 Number of data items in the tree
    0 Number of tree internal pages
    0 Number of bytes free in tree internal pages (0% ff)
    1 Number of tree leaf pages
    4058 Number of bytes free in tree leaf pages (0% ff)
    0 Number of tree duplicate pages
    0 Number of bytes free in tree duplicate pages (0% ff)
    0 Number of tree overflow pages
    0 Number of bytes free in tree overflow pages (0% ff)
    0 Number of empty pages
    0 Number of pages on the free list
    value = 0 = 0x0
    The result of running db_recover:
    db_recover "-c -h /bk1/db"db_recover: segment /bk1/db/__db.001 does not exist
    db_recover: /bk1/db/log.0000000002: log file unreadable: S_dosFsLib_FILE_NOT_FOU
    ND
    db_recover: PANIC: S_dosFsLib_FILE_NOT_FOUND
    db_recover: PANIC: fatal region error detected; run recovery
    db_recover: dbenv->close: DB_RUNRECOVERY: Fatal error, run database recovery
    value = 1 = 0x1

  • Charts in Flex 3 compatibility mode are hosed

    I spent an 11 hour day struggling to get a LineChart working in Flex 3 compatibility mode that worked fine otherwise. I encountered a multitude of problems, spent hours tracing through Flex code, and finally have something almost working except for minor details like the horizontal axis insists on displaying on the top only (and the vertical on the right) even if I use the axis renderer placement tags to specify otherwise (and with any other values except "bottom" and "left" the data does not draw properly!). To give you a feeling for what I learned, a major breakthrough was setting gutters explicitly (the data points were calculated as NaN otherwise).
    If someone could suggest what might need setting to get the axes to display where I want them to I will be very grateful.
    To summarize -- LineCharts appear to be badly broken in Flex 3 compatibility mode.
    If an Adobe developer would like to verify, here is my source, including an example of the data I'm using. I posted earlier today wondering what the situation is and give some more details there.
    Thanks, Peter ([email protected])
    <?xml version="1.0"?>
    <!-- charts/BasicLine.mxml -->
    <mx:Application
        xmlns:mx="http://www.adobe.com/2006/mxml"
        xmlns:bwc="*"
        creationComplete="initialization()"
        width="1200" height="800" layout="absolute" >       
        <mx:Label id="titleLabel" x="30" y="10" text="Progress Chart for " fontSize="16" />
        <!--mx:Label id="measureLabel" x="688" y="25" text="Measure:" fontSize="12" width="67"/-->
        <mx:ComboBox id="measureCombo" x="300" y="14" width="300" dataProvider="{patientMeasureNames}"
                     editable="false" change="loadPatientData()" />   
        <mx:SolidColorStroke id="axisStroke"
                             color="#000000"
                             weight="2"
                             alpha="1"
                             caps="square" />
        <mx:SolidColorStroke id="tickStroke"
                             color="#000000"
                             weight="1"
                             alpha="1" />
        <mx:SolidColorStroke id="minorTickStroke"
                             color="#000000"
                             weight="1"
                             alpha="1" />
        <mx:SolidColorStroke id="dataStroke"
                             color="0x11538C"
                             weight="3"
                             alpha="1" />
        <mx:Canvas id="chartCanvas" x="30" y="50" width="600" height="500" borderStyle="solid" >
            <mx:LineChart id="progressChart" x="10" y="10" width="550" height="450"
                          dataProvider="{patientData}"
                          showDataTips="true"     
                          horizontalAxisStyleNames="{styleNames}" verticalAxisStyleNames="{styleNames}"
                          gutterBottom="10" gutterLeft="10" gutterRight="10" gutterTop="10" gridLinesStyleName=""
                          >
                <mx:annotationElements>
                    <mx:CartesianDataCanvas id="annotationCanvas" includeInRanges="true"  width="800" height="400"/>
                </mx:annotationElements>
                <mx:horizontalAxis>
                    <mx:DateTimeAxis id="hAxis" parseFunction="makeDateFromString"
                                     alignLabelsToUnits="true" displayLocalTime="true"
                                     title="" labelFunction="formatDateLabel" maximum="{maxDate}"
                                      /> <!--  -->
                </mx:horizontalAxis>
                <mx:verticalAxis>
                    <mx:LinearAxis id="vAxis" interval="1" maximum="{this.maxValue}" title="" /> <!--  -->
                </mx:verticalAxis>
                <mx:series>
                    <bwc:BwcLineSeries xField="date" yField="value" displayName="(measure)" stroke="{dataStroke}"
                                   itemRenderer="mx.charts.renderers.CircleItemRenderer"
                                   lineSegmentRenderer="mx.charts.renderers.LineRenderer"
                                    width="700" height="350" lineStroke="{dataStroke}" radius="4"
                                   >
                    </bwc:BwcLineSeries>               
                </mx:series>
                <mx:seriesFilters>
                    <mx:Array/>
                </mx:seriesFilters>
                <mx:horizontalAxisRenderers>
                    <mx:AxisRenderer axis="{hAxis}"
                                     axisStroke="{axisStroke}" tickStroke="{tickStroke}" minorTickStroke="{minorTickStroke}"
                                     showLine="true" showLabels="true" labelRenderer="mx.charts.chartClasses.ChartLabel"
                                     placement="bottom" tickPlacement="cross" tickLength="5" fontSize="12"
                                     />
                </mx:horizontalAxisRenderers>           
                <mx:verticalAxisRenderers>
                    <mx:AxisRenderer axis="{vAxis}"
                                     axisStroke="{axisStroke}" tickStroke="{tickStroke}" minorTickStroke="{minorTickStroke}"
                                     showLine="true" showLabels="true" labelRenderer="mx.charts.chartClasses.ChartLabel"
                                     placement="left" tickPlacement="cross" tickLength="5" fontSize="12"
                                     />
                </mx:verticalAxisRenderers>
            </mx:LineChart>
            <!--mx:Legend id="chartLegend"
                       x="20" y="{chartCanvas.height - chartLegend.height - 20}"
                       dataProvider="{progressChart}" /-->
        </mx:Canvas>
        <mx:Script>
            <![CDATA[
                import com.bewellcommunication.pvg.model.BackendService;
                import com.bewellcommunication.pvg.model.Utilities;
                import flash.events.TimerEvent;
                import mx.charts.chartClasses.IAxis;
                import mx.charts.series.items.LineSeriesItem;
                import mx.collections.ArrayCollection;
                import mx.collections.XMLListCollection;
                import mx.controls.RadioButton;
                import mx.controls.RadioButtonGroup;
                import mx.rpc.events.ResultEvent;
                [Bindable]
                private var patientMeasureNames:ArrayCollection;
                private var patientMeasureIds:Array;
                private var dataVideoIds:Array;
                private var videoButtons:Array;
                [Bindable]
                private var patientData:XMLListCollection;
                [Bindable]
                private var maxDate:Date;
                [Bindable]
                private var maxValue:Number;
                [Bindable]
                private var styleNames:Array = new Array("axisStroke");
                private function initialization():void
                    var service:BackendService = new BackendService();
                    var xml:String = "<LoadPatientMeasures>"
                        + "\n<clientId>" + 2 + "</clientId>"
                        + "\n</LoadPatientMeasures>";
                    service.request(xml, loadPatientMeasuresFinish);
                public function loadPatientMeasuresFinish(re:ResultEvent):void
                    var xmlResult:XML = XML(re.result.valueOf().toString());
                    var error:String = xmlResult.error;
                    if (error != null && error != "")                   
                        trace(xmlResult.error + "Problem loading patient measures");        // PENDING: bwcAlert
                    else
                        this.patientMeasureNames = new ArrayCollection();
                        this.patientMeasureNames.addItem("(Select measure)");
                        this.patientMeasureIds = new Array();
                        this.patientMeasureIds.push(0);
                        var xmlMeasures:XMLList = xmlResult.measures.children();
                        for each (var xmlMeasure:Object in xmlMeasures)
                            this.patientMeasureIds.push(Number(xmlMeasure.measureId));
                            var name:String = xmlMeasure.measureName;                        // PENDING: utils.makeSafe()
                            this.patientMeasureNames.addItem(name);       
                public function loadPatientData():void
                    var measureIndex:int = this.measureCombo.selectedIndex;
                    if (measureIndex < 1)
                        return;
                    var service:BackendService = new BackendService();
                    var xml:String = "<LoadPatientData>"
                        + "\n<clientId>" + 2 + "</clientId>"
                        + "\n<measureId>" + this.patientMeasureIds[measureIndex] + "</measureId>"
                        + "\n</LoadPatientData>";
                    service.request(xml, loadPatientDataFinish);               
                public function loadPatientDataFinish(re:ResultEvent):void
                    var xmlResult:XML = XML(re.result.valueOf().toString());
                    var error:String = xmlResult.error;
                    if (error != null && error != "")                   
                        trace(xmlResult.error + "Problem loading patient data");        // PENDING: bwcAlert
                    else
                        // re-initialize
                        this.annotationCanvas.removeAllChildren();                   
                        // set data for graphing
                        this.patientData = new XMLListCollection(xmlResult.results.result);
                        this.dataVideoIds = new Array();
                        // calculate mins and maximums for axis spacing
                        var xmlResults:XMLList = xmlResult.results.children();
                        var minDate:Number = Number.MAX_VALUE;
                        var maxDate:Number = Number.MIN_VALUE;
                        var minVal:Number = Number.MAX_VALUE;
                        var maxVal:Number = Number.MIN_VALUE;
                        for each (var result:Object in xmlResults)
                            var date:Number = Number(result.date);
                            var val:Number = Number(result.value);
                            if (!isNaN(val))
                                if (date < minDate)
                                    minDate = date;
                                if (date > maxDate)
                                    maxDate = date;
                                if (val < minVal)
                                    minVal = val;
                                if (val > maxVal)
                                    maxVal = val;
                            // also store the video id
                            var videoId:Number = Number(result.videoId);
                            this.dataVideoIds.push(videoId);
                        // set scale max for each axis
                        this.maxDate = new Date(maxDate + ((maxDate - minDate) * 0.1));
                        this.maxValue = maxVal * 1.1;
                        // draw links to videos
                        var utils:Utilities = new Utilities();
                        utils.relinquishThenFinish(drawLinksToVideos, 500);
                private function drawLinksToVideos(e:TimerEvent):void
                    var rect:Rectangle = new Rectangle(0, 0, 99999, 99999);        // get all items
                    var items:Array = this.progressChart.getItemsInRegion(rect);
                    var i:int;
                    var rbg:RadioButtonGroup = new RadioButtonGroup(this.annotationCanvas);
                    this.videoButtons = new Array();
                    for (i = 0; i < items.length; i++)
                        var liveButton:RadioButton = null;
                        if (this.dataVideoIds[i] > 0)
                            var item:LineSeriesItem = items[i];
                            var radio:RadioButton = new RadioButton();
                            radio.group = rbg;
                            liveButton = radio;
                            radio.addEventListener(Event.CHANGE, loadAndPlayVideo);
                            this.annotationCanvas.addDataChild(radio, item.xValue, item.yValue);
                        this.videoButtons.push(liveButton);    // one for each item
                private function loadAndPlayVideo(e:Event):void
                    var utils:Utilities = new Utilities();
                    utils.relinquishThenFinish(finishLoadAndPlayVideo);
                private function finishLoadAndPlayVideo(e:TimerEvent):void
                    // identify video to play
                    var i:int;
                    var target:int = -1;
                    for (i=0; target == -1 && i < this.videoButtons.length; i++)
                        var radio:RadioButton = this.videoButtons[i] as RadioButton;
                        if (radio != null && radio.selected)
                            target = i;
                    // play video
                    if (target > -1)
                        trace("play video: index=" + target + " id=" + this.dataVideoIds[target]);
                private function makeDateFromString(dateStr:String):Date
                    var dateNum:Number = Number(dateStr);
                    var date:Date = new Date(dateNum);
                    trace("date=" + date.toLocaleString());
                    return date;
                private function formatDateLabel(cur:Date, prev:Date, axis:IAxis):String
                    var label:String = cur.month + "/" + cur.date + " " + cur.hours + ":" + cur.minutes;
                    return label;
            ]]>
        </mx:Script>
    </mx:Application>
    package
        import mx.charts.series.LineSeries;
        public class BwcLineSeries extends LineSeries
            public function BwcLineSeries()
                super();
            override protected function updateDisplayList(unscaledWidth:Number,
                                                          unscaledHeight:Number):void
                var useWidth:Number = unscaledWidth;
                var useHeight:Number = unscaledHeight;
                /*if (isNaN(useWidth))
                    useWidth = 745.5;
                    useHeight = 365;
                super.updateDisplayList(useWidth, useHeight);
    <data>
      <measure/>
      <results>
        <result>
          <date>1276613823585</date>
          <value>180.0</value>
          <videoId>0</videoId>
        </result>
        <result>
          <date>1276613923383</date>
          <value>170.0</value>
          <videoId>0</videoId>
        </result>
        <result>
          <date>1276614556024</date>
          <value>210.0</value>
          <videoId>0</videoId>
        </result>
        <result>
          <date>1276628450502</date>
          <value>150.0</value>
          <videoId>104</videoId>
        </result>
        <result>
          <date>1276628667114</date>
          <value>180.0</value>
          <videoId>106</videoId>
        </result>
      </results>
    </data>

    @Jason Villmer,
    I believe the issue you're describing is http://bugs.adobe.com/jira/browse/SDK-26940.
    There is a workaround listed in the bug report which should work (based on my testing), or you could probably set the direction and layoutDirection styles globally using a Style block.
    Peter

  • Zipped files created with Java won't unzip with Java

    Hello there,
    I have written a class for unzipping a zip file using the 'ZipFile' class. It works perfectly fine when I extract zip files that have been created with XP, Winzip, or Winrar.
    I am now experimenting with creating zip files using the ZipOutputStream (http://forum.java.sun.com/thread.jspa?forumID=256&threadID=366550 by author smeee). The code works great for creating the zip file, but when I try and unzip it with the zipfile class mentioned above it throws an exception.
    The error that the following code gives me when it tries to convert an element from the enumeration to a ZipEntry is this: java.io.FileNotFoundException: C:\testfiles\out\high\BAUMAN\00001.jpg (The system cannot find the path specified)
    NOTE: The file is there by the way!!! :-)
    See the code for extracting here:
    try {
                 zippy = new ZipFile(fileName);
                 Enumeration all = zippy.entries();
                 while (all.hasMoreElements()) {//loop through all zip entries
                              getFile((ZipEntry)all.nextElement()); <<<=====FAILS HERE
    } catch (IOException err) {
                 System.err.println(err.toString());
                 return;
    }Now if I extract the zip file with winzip, then rezip it with winzip and run the above method again it works with no errors. Any thoughts. Any help would be greatly appreciated.
    Jared

    Hello All,
    For anyone else who use the forum posting by smeee as a guide to create a zipper (http://forum.java.sun.com/thread.jspa?forumID=256&threadID=366550 by author smeee).
    I was tracing through the code and found that there is a statement that adds 1 character (strSource.length()+1) to the source path. This was causing the following bug:
    In windows it was placing objects like this \myfolder\myfile.txt
    In unix it was placing objects like this yfolder\myfile.txt
    Naturally a path like \myfolder... in the zip index was causing problems. I have added a case statement that tests the OS and then adds two chars if windows to compensate for the 'C:' and does nothing if Unix. The code now runs perfectly on either OS.
    Thanks for your response guys!
    Jared

  • Insufficient SQL database permissions for user 'Name: NT AUTHORITY\IUSR SID: S-1-5-17...

    Hi,
    I have a customized SharePoint page that takes user input data, validate some of the data, then writes the data to a SharePoint list. If an exception occurs, it will write the error to the ULS.
    All was working well in the test environments.
    However, recently we noticed that in the QA environment, when it's trying to write to ULS, it causes another issue:
    Insufficient SQL database permissions for user 'Name: NT AUTHORITY\IUSR SID: S-1-5-17 ImpersonationLevel: Impersonation' in database 'SP_F1_Config' on SQL Server instance 'SQL01'. Additional error information from SQL Server is included below. The EXECUTE
    permission was denied on the object 'proc_putObjectTVP', database 'SP_F1_Config', schema 'dbo'.
    I've traced through the code and found that it fails on the line:
        SPDiagnosticsServiceBase.GetLocal<LoggerError>();
    where LoggerError is the logger class inheritng SPDiagnosticsServiceBase
    I have also googled around today, but the most positive solution provided
    on this page was to manually modify SQL object permission, which I believe we should not do, and would not be supported by Microsoft.
    So the questions are:
    Why is AUTHORITY\IUSER used for SPDiagnosticsServiceBase.GetLocal()? Should that account actually be allowed to access SharePoint databases? (This is an intranet environment and using claim based/Windows authentication, no no anonymous access would be allowed
    anyway).
    I've checked the Application Pool account permissions in SQL, comparing the environment that works and the one that doesn't work, and the permissions/roles/schemas look identical on server and database level. Where else can I check?
    On the environment that works, I logged on as SharePoint administrator, created a new SharePoint Visual Web Part solution in Visual Studio, just to test writing to ULS. Then I press F5 in Visual Studio to debug it. It also has the same problem.
    It just seems like somehow the user's identity (or whatever the identity SharePoint required) was not passed to SPDiagnosticsServiceBase.
    Any suggestions, or even better, solutions would be really really much appreciated!

    Hi,
    Thanks for your sharing, it will be userful to the people who stuck with the same issue.
    Best regards
    Patrick Liang
    TechNet Community Support

  • Exchange Portlet - Session Cookies - Collapsing Portlets

    I am having trouble with the exchange portlet collapsing when refreshed.
    I have been tracing through the code and narrowed it down to a missing cookie in the PortletRenderRequest object.
    The process method in ExchangeProvider creates a new ApplicationLogin object using the PortletRenderRequest object.
    When the ApplicationLogin object is created it scans the cookie list in the request object for the exchangecookie which it then uses to populate the login details and sets the logged-in flag to true, if it can't find the cookie it assumes the caller is not logged in and sets the logged-in flag to false.
    The first time the ExchangeProvider.process method is called there are two cookies in the list (an exchangecookie and a JServSessionIdroot cookie) which is fine because it sets up the users details as expected, the second time it gets called (when you refresh the page) the exchangecookie has disappeared from the request object, so it leaves the ApplicationLogin object in the logged-in = false state, which inturn means the page does not get rendered.
    Does anyone know when the exchangecookie gets created and when it gets passed around? This would help in tracking down the error, or better still does anyone know how to fix this problem?
    Any help would be greatly appreciated.
    DJ
    P.S. There is a known problem in Oracle Financials and Application Server with cookies and IE, but this problem occurs in IE and NS so it does not appear to be browser dependent.
    null

    If I comment out caching and set login to "always" the portlets take 2-5 minutes to render, which is not acceptable for deployment.
    Can anybody fix the JPDK or the portlets?
    John
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Amr El Magayry ([email protected]):
    Alan ,
    Comment the code that do caching in the begining of each renderShow method in each of the four renderer classes (e.g. InboxRenderer,CalendarRenderer, ...), together with login freqeuncy set to 'Always', it will work.
    Pls Send me your code to fix the Ok & Apply buttons in the Customize page.
    Amr<HR></BLOCKQUOTE>
    null

  • Problems with IF statement

    I have tried it out for so many times, but still cannot solve the problems, anyone pls help me out on this....
    <%@page import="javax.servlet.*,javax.servlet.http.*,java.util.*,java.sql.*,java.io.*,java.text.*,javax.swing.*"%>
    <jsp:useBean id="singleSearchBean" scope="request" class="hadmar.SingleSearch"/>
    <%
    String serial=request.getParameter("serial");
    String bda=request.getParameter("bda");
    singleSearchBean.setSerial(serial);
    singleSearchBean.setBda(bda);
    %>
    <html><head><title>Hadmar BLT Single UUT Result</title></head>
    <body background = "img/blbkgnd.gif">
    <H1><font face="Impact" color="#336699">Hadmar UUT result for <b><%=serial%><%=bda%></b></font></H1>
    <table BORDER="1" CELLSPACING="2" width="900">
    <thead>
    <tr>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="100"><font SIZE="2">Serial No</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="110"><font SIZE="2">Date Time</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="70"><font SIZE="2">Station ID</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="50"><font SIZE="2">Login</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="100"><font SIZE="2">Execution Time</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="50"><font SIZE="2">Status</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="70"><font SIZE="2">Station Type</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="100"><font SIZE="2">BDA No</th>
    </tr>
    </thead>
    <%
    String status=singleSearchBean.getStatus();
    String testtype=singleSearchBean.getTesttype();
    %>
    <% if (status==null) { %>
    <%= singleSearchBean.singleFailQuery() %>
    <% } else { %>
    <%= singleSearchBean.singleProcessQuery() %>
    <% } %>
    </table>
    <% if (status==null && testtype.equals("NumericLimitTest")) { %>
    <br><b>Failed Parameter for above UUT</b>
    <table BORDER="1" CELLSPACING="2" width="750">
    <thead>
    <tr>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="150"><font SIZE="2">Parameter Name</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="150"><font SIZE="2">Measurement</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="100"><font SIZE="2">High Limit</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="100"><font SIZE="2">Low Limit</th>
    <th BGCOLOR="#c0c0c0" BORDERCOLOR="000000" width="50"><font SIZE="2">Unit</th>
    </tr>
    </thead>
    <%= singleSearchBean.failDetailQuery() %>
    </table>
    <% } %>
    <%=testtype%>
    <%=status%>
    </body>
    </html>
    The second IF statement is not working, i have tried to change the testtype=="NumericLimitTest" to testtype.equals("NumericLimitTest") but it still don't work. i was wondering whether is the problem of the IF structure. Can anyone help me on this? Thank you veyr much.

    Just to clarify, please: under the lines<%=testtype%>
    <%=status%>please add the line<%=(status==null)?"status is actually null":"status has String value of null"%>I'm asking this because the code you've give and the statement that status is null still leaves the question of where you're determining this; if the <%=status%> line is the only way you're determining this, we still don't know the actual value of the variable.
    If you've already traced through the code in a debugger and are certain that the first query is firing in the first conditional (if (status == null) ), then please let us know that.

  • Manually refreshing TGT leads to "Message stream modified" error

    We wish to use Kerberos to implement application authentication without needing username/password. We have code which gets the TGT and can get other tickets from that, and those tickets can successfully be used with LDAP to make queries. However, the TGT will expire after 10 hours, unless (for example) the lockscreen is used to supply a username/password, at which point the TGT is renewed.
    We understand that it should be possible to renew the TGT from the application, so that long-running processes do not require another login. The ticket's metadata says it is renewable, and we have set options to say we want to do this. We get hold of the ticket and do refresh(), and this attempts to renew the Credentials. However, the attempt fails with the following exception:
    javax.security.auth.RefreshFailedException: Failed to renew Kerberos Ticket for client [email protected] and server krbtgt/[email protected] - Message stream modified (41)
    Having traced the executing code down through the debugger, it goes down through KerberosTicket.refresh(), Credentials.renew(), is constructing a new EncryptedData and does Cipher.getInstance() with transformation "DES/CBC/NoPadding". This gets down to a Provider, which raises the exception.
    We have checked that we only have one matched pair for serviceprincipalname.
    So the questions are: (a) should it be possible to refresh the TGT in this way, or is it simply impossible to refresh it without a username and password?; (b) if it should be possible, what is the likely cause of the exception?
    A debug trace of an attempt looks like:
    H:\support\users\paulw\Workspace\kerberos\bin>java -Dsun.security.krb5.debug=true -Djava.security.krb5.realm=NMS.DEV.PS.GE.COM -Djava.security.krb5.kd
    c=UKCBGDC01DFPS -Djava.security.auth.login.config=jaas.conf JaasAcn
    KinitOptions cache name is C:\Documents and Settings\paulw\krb5cc_paulwAcquire default native Credentials
    Obtained TGT from LSA: Credentials:
    [email protected]
    server=krbtgt/[email protected]
    authTime=20090127152629Z
    startTime=20090127152629Z
    endTime=20090128012629Z
    renewTill=20090203152629Z
    flags: FORWARDABLE;RENEWABLE;INITIAL;PRE-AUTHENT
    EType (int): 23
    Authentication succeeded!
    [email protected]
    Start time = Tue Jan 27 15:26:29 GMT 2009, Expires = Wed Jan 28 01:26:29 GMT 2009, isCurrent = true, isInitial=true, [email protected].
    GE.COM, ServerPrincipal=krbtgt/[email protected]
    Using builtin default etypes for default_tgs_enctypes
    default etypes for default_tgs_enctypes: 3 1 23 16 17.
    CksumType: sun.security.krb5.internal.crypto.RsaMd5CksumType
    EType: sun.security.krb5.internal.crypto.ArcFourHmacEType
    KrbKdcReq send: kdc=UKCBGDC01DFPS UDP:88, timeout=30000, number of retries =3, #bytes=1799
    KDCCommunication: kdc=UKCBGDC01DFPS UDP:88, timeout=30000,Attempt =1, #bytes=1799
    KrbKdcReq send: #bytes read=106
    KrbKdcReq send: #bytes read=106
    KDCRep: init() encoding tag is 126 req type is 13
    KRBError:sTime is Tue Jan 27 16:00:42 GMT 2009 1233072042000
    suSec is 717480
    error code is 52
    error Message is Response too big for UDP, retry with TCP
    realm is NMS.DEV.PS.GE.COM
    sname is krbtgt/NMS.DEV.PS.GE.COM
    msgType is 30
    KrbKdcReq send: kdc=UKCBGDC01DFPS TCP:88, timeout=30000, number of retries =3, #bytes=1799
    DEBUG: TCPClient reading 1783 bytes
    KrbKdcReq send: #bytes read=1783
    KrbKdcReq send: #bytes read=1783
    EType: sun.security.krb5.internal.crypto.ArcFourHmacETypeerr: javax.security.auth.RefreshFailedException: Failed to renew Kerberos Ticket for client [email protected] and server krbtgt/[email protected] - Message stream modified (41)
    The problem is reproducible with a simple java client and has been reproduced on two machines within the corporate network using different kdc's. It is also reproducible on a customers site where the ticket expiry is 1 hour.
    thanks
    paul

    If it helps.. the client code and config file.
    If someone has a working system and could confirm whether the general principle here is correct, that would be much appreciated.
    thanks
    paul
    java -Dsun.security.krb5.debug=true -Djava.security.krb5.realm=<realm-name> -Djava.security.krb5.kdc=<kdc-name> -Djava.security.auth.login.config=jaas.conf JaasAcn
    * @(#)JaasAcn.java
    * Copyright 2001-2002 Sun Microsystems, Inc. All Rights Reserved.
    * Redistribution and use in source and binary forms, with or
    ...snip
    * intended for use in the design, construction, operation or
    * maintenance of any nuclear facility.
    import java.util.*;
    import javax.security.auth.kerberos.*;
    import javax.security.auth.*;
    import javax.security.auth.login.*;
    import com.sun.security.auth.callback.TextCallbackHandler;
    import java.security.*;
    import javax.security.auth.Subject;
    * This JaasAcn application attempts to authenticate a user
    * and reports whether or not the authentication was successful.
    public class JaasAcn {
         public static void main(String[] args) {
              // Obtain a LoginContext, needed for authentication. Tell it
              // to use the LoginModule implementation specified by the
              // entry named "JaasSample" in the JAAS login configuration
              // file and to also use the specified CallbackHandler.
              LoginContext lc = null;
              try {
                   lc = new LoginContext("JaasSample", new TextCallbackHandler());
              } catch (LoginException le) {
                   System.err.println("Cannot create LoginContext. "
                             + le.getMessage());
                   System.exit(-1);
              } catch (SecurityException se) {
                   System.err.println("Cannot create LoginContext. "
                             + se.getMessage());
                   System.exit(-1);
              System.out.println("Time is now " +new Date());
              try {
                   // attempt authentication
                   lc.login();
              } catch (LoginException le) {
                   System.err.println("Authentication failed:");
                   System.err.println("  " + le.getMessage());
                   System.exit(-1);
              System.out.println("Authentication succeeded!");
              Subject mSubject = lc.getSubject();
              Iterator li = mSubject.getPrincipals().iterator();
              // Should only have one Principal
              if ( li.hasNext() ) {
                   Principal lPrincipal = (Principal) li.next();
                   System.out.println(lPrincipal.toString());
              li = mSubject.getPrivateCredentials().iterator();
              if ( li.hasNext() ) {
                   Object lObject = (Object) li.next();
                   if ( lObject instanceof KerberosTicket ) {
                        KerberosTicket lKerberosTicket = (KerberosTicket) lObject;
                        System.out.println(
                                  "Start time=" + lKerberosTicket.getStartTime() +
                                  ", Expires=" + lKerberosTicket.getEndTime() +
                                  ", RenewUntil=" + lKerberosTicket.getRenewTill() +
                                  ", isCurrent=" + lKerberosTicket.isCurrent() +
                                  ", isRenewable=" + lKerberosTicket.isRenewable() +
                                  ", isInitial=" + lKerberosTicket.isInitial() +
                                  ", ClientPrincipal=" + lKerberosTicket.getClient().toString() +
                                  ", ServerPrincipal=" + lKerberosTicket.getServer().toString());            
                        try {
                             lKerberosTicket.refresh();
                        catch ( RefreshFailedException e )
                             System.err.println("err: " + e);
    /** Login Configuration for the JaasAcn and
    ** JaasAzn Applications
       [email protected]
       doNotPrompt=true
       useKeyTab=true
    JaasSample {
       com.sun.security.auth.module.Krb5LoginModule required
       useTicketCache=true
       renewTGT=true
       debug=true;
    };

  • How RMI implements multithreading in Server-side?

    In [http://my.execpc.com/~gopalan/java/rmi_internals.html] says:
    "On the server side, when a client connects to the server socket, a new thread is forked to deal with the incoming call. The original thread can continue listening to the original socket so that additional calls from other clients can be made."
    I have traced Java source code (jdk-6u18-ea-src-b05-jrl-18_nov_2009.jar) , but i could not find where and how Java RMI do it.
    Could anyone give me some hint? Thanks!

    In [http://my.execpc.com/~gopalan/java/rmi_internals.html] says:
    The status of that site is zero. All you can rely on is the RMI specification.
    "On the server side, when a client connects to the server socket, a new thread is forked to deal with the incoming call. The original thread can continue listening to the original socket so that additional calls from other clients can be made."That accurately describes the Sun implementation of RMI as of 1.5, the latest source code I have looked at. It doesn't accurately describe the IBM implementation nor I suspect the Sun 1.6 implementation.
    I have traced Java source code (jdk-6u18-ea-src-b05-jrl-18_nov_2009.jar) , but i could not find where and how Java RMI do it. So? Why does it matter? The RMI specification tells you what the multi-threading guarantees of RMI are. They are all you can rely on.

  • Javax.xml.ws.Endpoint.publish and timeout

    I'm using javax.xml.ws.Endpoint.publish to enable a very simple and small service for my unit test, so I can really work with the dynamics of (un)marshalling objects. This works great, but while I'm tracing server side code, the client side (unit test) fails on a timeout exception. This is annoying. Is there any way I can set the timeout value when using javax.xml.ws.Endpoint.publish?

    the timeout is a client side thing, most likely. you need to set the http request timeout on the client.

Maybe you are looking for