0

そのため、JFrame を開く際に少し問題があります。ネットで散々調べたのですが、どうしても解決策が見つかりません...

私は状況を説明しました:

新しい安全基準を満たしながら、情報追跡アプリケーションを取得する必要があるアプリケーションを開発する必要があります。そのために、監視を可能にする JMX と VisualVM がこれらの情報を確認できるようにしています。

そのため、VisualVM 以来、問題なく (最近 ^ ^) JMX に接続しています。

したがって、MBean に関する情報を回復するための VisualVM プラグインには、メソッド (プラグインの [操作] タブ) に関する情報も含まれます。これにより、特にサービスを停止したり、イベントを作成したりできます。

統計の結果を表示しようとすると、私の問題が発生します。実際、「操作」のメソッドのリストからボタンをクリックするだけで、HTML の表 (タイトル、色、その他すべて) を含むウィンドウを表示する必要があります。

そのために、JFrame を使用します。

public JFrame displayHTMLJFrame(String HTML, String title){
        JFrame fen = new JFrame();
        fen.setSize(1000, 800);
        fen.setTitle(title);

        JEditorPane pan = new JEditorPane();
        pan.setEditorKit(new HTMLEditorKit());
        pan.setEditable(false);

        pan.setText(HTML);
        fen.add(pan);
        return fen;
    }

私は自分のメソッドでそれを呼び出します:

public JFrame displayHtmlSqlStatOK_VM(){
        return displayHTMLJFrame(displaySQLStat(sqlStatOK, firstMessageDate), "SqlStatOK");
    }

したがって、このメソッドは JFrame を返す必要がありますが、彼女はエラーを生成します。

Problem invoking displayHtmlSqlStatOK_VM : java.rmi.UnmarshalException: error unmarshalling return; nested 

exception is:
java.io.InvalidClassException: javax.swing.JFrame; local class incompatible: stream classdesc serialVersionUID = 

-5208364155946320552, local class serialVersionUID = -2386951414768123374

これはバージョンの問題 (シリアライゼーション) であるとインターネットで見ました。

サーバー - JDK5 <----> クライアント (VisualVM) - JDK6

一部のサイトやフォーラムで提唱されているように、サーバーのバージョンを変更できないことを知っています (コストがかかりすぎます...)。

私の質問は次のとおりです。

現在のアーキテクチャ (JDK5 サーバー側とクライアント側 JDK6) を維持したまま、このいまいましいウィンドウを表示できますか?

問題を強制することはできますか?私のコードを実行できる悪いことは何もないことを彼に伝えますか? 最後に私は彼に尋ねていますが、彼は私に答えないかもしれません.

私を読んで助けてくださった方々、本当にありがとうございました!

さらに情報が必要な場合は、お気軽にお問い合わせください。

編集

私の問題の解決策は他の場所にあるかもしれません.

しかし、VisualVM で返すことができる型のリストはどこにも見つかりませんでした。

一時的なHTMLファイルを作成してブラウザで自動的に開くというバックアップソリューションを考えた後、その直後はおそらくあまりきれいではありません...しかし、それが機能する場合^^

私はあらゆる研究分野に門戸を開いています!

4

2 に答える 2

0

素晴らしいと思いました:)

ありがとう、じゃね!

.........。

もちろん冗談ですが、見つけた解決策を紹介します^ ^

これが私がしたことです:

クライアントで実行する表示(通常...)サーバーで設定したJFrameを表示するコードが明らかに表示されました...サーバーxDで

ユーザーに最大限の柔軟性を与えるために顧客(VisualVM)を変更したくありませんでした。ただし、HTMLテーブルを(色などを使用して)使用可能に表示するには、クライアントを変更する必要があることに気付きました(JMXはタイプバック操作としてタイプJFrameをサポートしていないため)。

VisualVM用のMBeansプラグインから実行している私の操作では、「JFrameに表示するHTMLを提供しているのを確認したら、注意してください」というソースコードを見つける必要がありました。

これが私のアプローチです:

-ソースを入手する

ソースVisualVMを取得するためのリンクSVNは次のとおりです。

https://svn.java.net/svn/visualvm~svn/branches/release134

私のように、プロキシの背後にいるためにNetBeansに含まれるSVNクライアントに問題がある場合は、コマンドラインでそれを行うことができます。

svn --config-option servers:global:http-proxy-host=MY_PROXY_HOST --config-option servers:global:http-proxy-port=MY_PROXY_PORT checkout https: //svn.java.net/svn/visualvm~svn/branches/release134 sources-visualvm

もちろん、宛先フォルダーに移動します(cd C:\ Users \ me \ Documents \ SourcesVisualVMの例)。

-プラットフォームVisualVMの追加

NetBeansには、そのためのモジュール(プラグイン)を作成するためのプラットフォームVisualVMが必要です。これを行うには、「ツール」->「NetBeansプラットフォーム」に移動します。

次に、ウィンドウの左下にある[プラットフォームの追加...]をクリックし、次のアドレスでダウンロードされたビンのフォルダーを選択します:http://visualvm.java.net/download.html

あなたはこれを持っているべきです:

http://img15.hostingpics.net/pics/543268screen1.png

-ワークスペースにソースを追加する(NetBeansProjects)

ダウンロードしたソース(上記のリンクからのSVN)をNetBeansワークスペース(デフォルトではC:\ Users \ XXX \ Documents \ NetBeansProjects)にコピーして貼り付けます。

-Ouverture duprojetduプラグインMBeans

NetBeansで、プロジェクトエクスプローラを右クリックし(またはメニュー「ファイル」に移動)、「プロジェクトを開く...」をクリックします。これで、ワークスペースにプロジェクトのリストが表示されます。以下のように、「release134」->「プラグイン」にあるプロジェクト「mbeans」を開きます。

http://img15.hostingpics.net/pics/310487screen2.png

-ファイル「platform.properties」の変更

プラグインをビルドするには、プラットフォームのいくつかの変数を定義する必要があります。これを行うには、ワークスペースのディレクトリrelease134 \ plugins\nbprojectにあるファイルplatform.propertiesを開きます。コンテンツを置き換えます(自分のパスと比較してパスを変更します)。

cluster.path=\
    C:\\Program Files\\java6\\visualvm_134\\platform:\
    C:\\Program Files\\java6\\visualvm_134\\profiler

# Deprecated since 5.0u1; for compatibility with 5.0:
disabled.clusters=
nbjdk.active=default
nbplatform.active=VisualVM_1.3.4
suite.dir=${basedir}

harness.dir= C:\\Program Files\\NetBeans 7.1.2\\harness

-クラスXMBeanOperationsの変更

この機能(HTMLテーブルの表示)を追加するには、操作を処理するクラス、つまりパッケージcom.sun.tools.visualvmのクラスXMBeanOperationsを変更する必要があります。modules.mbeans

173行目で、次を置き換えます。

if (entryIf.getReturnType() != null &&
                            !entryIf.getReturnType().equals(Void.TYPE.getName()) &&
                            !entryIf.getReturnType().equals(Void.class.getName()))
                        fireChangedNotification(OPERATION_INVOCATION_EVENT, button, result);

に :

if (entryIf.getReturnType() != null &&
                            !entryIf.getReturnType().equals(Void.TYPE.getName()) &&
                            !entryIf.getReturnType().equals(Void.class.getName())) {
                        if (entryIf.getReturnType() instanceof String) {
                            String res = result + "";
                            if (res.indexOf("<html>") != -1) {
                                JFrame frame = displayHTMLJFrame(res, button.getText());
                                frame.setVisible(true);
                            }
                            else
                                fireChangedNotification(OPERATION_INVOCATION_EVENT, button, result);
                        } else
                            fireChangedNotification(OPERATION_INVOCATION_EVENT, button, result);
                    }

「voidperformInvokeRequest(最後のJButtonボタン)」の上に配置するJFrameを作成する方法では、次のようになります。

// Display a frame with HTML code
public JFrame displayHTMLJFrame(String HTML, String title){
        JFrame fen = new JFrame();
    fen.setSize(1000, 800);
    fen.setTitle(title);

    JEditorPane pan = new JEditorPane();
    pan.setEditorKit(new HTMLEditorKit());
    pan.setEditable(false);

    pan.setText(HTML);
    fen.add(pan);
    return fen;
}

戻り型のテストをすでに行っていることがわかります。返される文字列の場合、この文字列にbaliseが表示されている場合は、クリックの結果をJFrameを開いて置き換えます。入力した文字列、HTMLコードを表示する理由!

-.nbmの作成

ファイル.nbmは、プラグインのデプロイメントファイルです。(プロジェクトエクスプローラーで)プロジェクトを右クリックし、[NBMの作成]をクリックするだけです。ファイル.nbmは、プロジェクトのルートを「ビルド」するフォルダーに作成されます。

-VisualVMへのプラグインのインストール

プラグインをインストールするには、VisualVMに移動し、[ツール]-> [プラグイン]タブに移動してから[ダウンロード済み]に移動し、[プラグインの追加...]をクリックする必要があります。プラグイン.nbmを選択し、[インストール]をクリックします。次に、指示に従います。

有用な情報源

http://docs.oracle.com/javase/6/docs/technotes/guides/visualvm/

http://visualvm.java.net/ "] http://visualvm.java.net/

http://visualvm.java.net/api-quickstart.html(Créerunplugin VisualVM avec NetBeans)

助けてくれてありがとうTomasHurka;)

于 2012-08-14T08:33:47.920 に答える
0

JMX 接続を介してインスタンス javax.swing.JFrame を送信しているようです。これは悪い考えです。

于 2012-08-06T14:34:40.443 に答える