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
TomStart 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 PolojuHERE 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 RegardsWe 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.
JaredHello 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 -
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.
nullIf 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 -
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
paulIf 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
-
E-mail button using something other then Outlook
My question is simple when using an e-mail button you can send the PDF or XML through e-mail to a certain address such as a gmail, yahoo, msn or etc.. email account but the host e-mail server it is using is the Outlook on your local machine. My quest
-
When should I attach my own SET OF BOOKS
Hello All, I tried attaching my set of books at purchasing immediately after creating set of books,business group,operating unit.It was done successfully. But when I wanted to create a new requisition I was getting numerous errors like 1)APP-PO-14142
-
DemoTrust certificate being loaded but not defined in config.xml
I have a strange problem in that the DemoTrust.jks is being loaded when I start any of the managed servers. I have set-up custom Identity and trust keystores and there is no reference to the DemoTrust keystore anywhere in the config.xml The problem m
-
ACR update fails-"product not found"
I have PSE 6/mac & LR. I get an Adobe Updater notification of ACR 4.6 but when clicked to install, it comes back with error message essentially saying 'the product to be updated can't be found'. It also says something about this being an update for
-
Hello, I have a Toshiba Netbook that I just put i-tunes on and when I go into import settings, I want to change it to MP3, but when I leave the dialogue box, it defaults back to AAC. What am I missing? Thanks.