我正在编写一个带有连接到燕尾服的jolt类库的Java客户端,当没有任何i18n时,它运行得很好。但是当我包括i18n时,它就坏了。 这是我在客户端执行的操作:
/* jolt.jar, jolti18n.jar, joltjse.jar, are all included in the classpath */
System.setProperty("bea.jolt.encoding", "GBK"); // without this line, everything is good.
JoltSessionAttributes sattr = new JoltSessionAttributes();
sattr.setString(JoltSessionAttributes.APPADDRESS, host);
sattr.setInt(JoltSessionAttributes.IDLETIMEOUT, 300);
sattr.setInt(JoltSessionAttributes.SENDTIMEOUT, 10);
JoltSession session = new JoltSession(sattr, null, null, null, null);
JoltRemoteService rservice = new JoltRemoteService("QAM_CBS1_L1SVC", session); // Here throws the bea.jolt.ServiceException
/* some parameter setting here that doesn't concern */
rservice.call(null);
System.out.println(rservice.getOutputs());
这是我得到的例外:
Exception in thread "AWT-EventQueue-0" bea.jolt.ServiceException: Service is not available:QAM_CBS1_L1SVC
at bea.jolt.JoltRemoteService.init(JoltRemoteService.java:146)
at bea.jolt.JoltRemoteService.<init>(JoltRemoteService.java:102)
at com.wonderland.yang.util.ServiceCaller.call(ServiceCaller.java:23)
at com.wonderland.yang.MyGUI.submit(MyGUI.java:293)
...
我可以确定的是,燕尾服服务器支持i18n(“ GBK”作为字符集),因为我们已经拥有一个连接到它的WebLogicserver,并且它可以很好地响应中文字符。 WebLogic的VM选项:
-Dbea.jolt.encoding = GBK
我做了一些研究,关于jolt + i18n的所有发现是:
- 将jolti18n.jar甚至joltjse.jar包含到客户端的类路径中。
- 在客户端中设置字符集。
- 确保燕尾服服务器已启用i18n支持。
我做了以上所有事情。请帮忙。