Message3723
When we issue a jython command in WebSphere wsadmin scripting tool
which invokes a WebSphere MBean operation and the MBean method returns
a string containing some NLS translated characters such as French
characters "ceci aété fait déjà", Jython will automatically converts
the string to python unicode string and return to the wsadmin.
Here is an example:
The Java method "mbeanTest" returns some French characters:
public String mbeanTest()
{
return "ceci a été fait déjà";
}
Invoke the method in wsadmin interactive mode using jython and the
command returns some unicode string to wsadmin. It appears a bug in
Jython to mangle and convert the French string to python unicode
string.
C:\WebSphere\AppServer\profiles\Dmgr01\bin>wsadmin -lang jython
*sys-package-mgr*: processing modified jar,
'C:\WebSphere\AppServer\plugins\com.ibm.ws.admin.services.jar'
WASX7209I: Connected to process "dmgr" on node AMYLIN4CellManager06
using SOAP connector; The type of process is: DeploymentManager
WASX7031I: For help, enter: "print Help.help()"
wsadmin>cs = AdminControl.queryNames("type=ConfigService,*")
wsadmin>AdminControl.invoke(cs, 'mbeanTest')
'ceci a \xE9t\xE9 fait d\xE9j\xE0'
The wsadmin does not convert the French string to unicode string. The
wsadmin has invoked BSFManager.iexec(lang, command, 0, 0, command) and
BSFManger has taken the input command and finally invoked Jython
PyInterpreter.runcode() code and it somehow converts the French string
to the unicode string in Jython code and returns the unicode string to
wsadmin.
If we issue Jython "print" output command, it will returns the correct
string. We have added System.out.println() statements to prove wsadmin
has not converted the string and Jython has converted the string to
unicode string and return to wsadmin.
wsadmin>cs = AdminControl.queryNames("WebSphere:type=ConfigService,*")
********* invoke BSFManager.iexec(lang, command, 0, 0, command)
********* done
wsadmin>AdminControl.invoke(cs, 'mbeanTest')
********* invoke BSFManager.iexec(lang, command, 0, 0, command)
********** return from AdminControl.invoke() ceci a été fait déjà
'ceci a \xE9t\xE9 fait d\xE9j\xE0'
When issue the "print" command, it returns the correct French string.
wsadmin>s = AdminControl.invoke(cs, 'mbeanTest')
wsadmin>print s
ceci a été fait déjà |
|
Date |
User |
Action |
Args |
2008-10-29 21:02:44 | amylin | set | recipients:
+ amylin |
2008-10-29 21:02:43 | amylin | set | messageid: <1225314163.94.0.805586188479.issue1163@psf.upfronthosting.co.za> |
2008-10-29 21:02:43 | amylin | link | issue1163 messages |
2008-10-29 21:02:42 | amylin | create | |
|