1

Java プログラムで、リモート Java vm のデフォルトのファイル エンコーディングを調べる必要があります。

リモート vm で Charset.defaultCharset() を実行し、その値を取得する方法はありますか?リモート jvm で実行されているプログラムを変更せずに...

アップデート:

WebLogic 11g または WebLogic 12c サーバーのデフォルトの文字セットを調べようとしています...起動せず、再起動できず、コードをデプロイする「権利」がありません。

また、作成中の Java プログラム内からサーバー プロセスのデフォルトの Charset を判別できる必要もあります。サーバーと同じマシンで実行される場合があります...またはそうでない場合があります。サーバーと私のプログラムが同じ環境で起動するかどうかは非常に疑わしいです。

私は非常に少ない仮定に依存する方法を好みます...したがって、通常はより多くのコードを意味します...

おそらくサーバー上で Charset.defaultCharset() を実行できないので、「Charset.defaultCharset() を実行する」と言うべきではありませんでした。その人たちについて申し訳ありません。サーバープロセス内から Charset.defaultCharset() を実行するのと同じくらい正しい答えを提供する何かをする必要があります。

4

3 に答える 3

0

これが私がやったことです...(大まかに)

  mbs = conn.getMBeanServerConnection();
  ObjectName runtime = new ObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME);
  TabularDataSupport foo = 
    (TabularDataSupport) mbs.getAttribute(runtime, "SystemProperties");
  for (Iterator<Object> it = foo.values().iterator(); 
                      it.hasNext() && null == retVal; ) {
    CompositeDataSupport cds = (CompositeDataSupport) it.next();
    for (Iterator<?> iter = cds.values().iterator() ; 
                   iter.hasNext() && null == retVal ;) {
      if ("file.encoding".equals(iter.next()) && iter.hasNext())
        retVal = iter.next().toString();
    }

MBeanServer に接続してから、SystemProperties を調べて、接続の反対側のプロセスの file.encoding を見つけました。

于 2013-03-20T19:38:50.803 に答える