組み込みGlassFish v3:sun-resources.xmlの展開プログラムで失敗する
-
16-09-2020 - |
質問
GlassFish Embedded APIを使用して、JPA-EJB-Webプロジェクトをスタンドアロンアプリケーションとしてパッケージ化できるようにしたいと思います。
JPAレイヤを使用するには、 asadminコマンド GeneraCodeTagCode私はそれをするこのコード:
String command = "add-resources";
ParameterMap params = new ParameterMap();
params.add("", "...\sun-resources.xml" );
CommandRunner runner = server.getHabitat().getComponent(CommandRunner.class);
ActionReport report = server.getHabitat().getComponent(ActionReport.class);
runner.getCommandInvocation(command, report).parameters(params).execute();
.
しかしガスメがそれを拒否します:
15-Jul-2010 16:34:12 org.glassfish.admin.cli.resources.AddResources execute
.
重度:追加資源の中で何か問題が発生しました
java.lang.Exception: ...\gfembed6930201441546233570tmp\lib\dtds\sun-resources_1_4.dtd (The system cannot find the path specified)
at org.glassfish.admin.cli.resources.ResourcesXMLParser.initProperties(ResourcesXMLParser.java:163)
at org.glassfish.admin.cli.resources.ResourcesXMLParser.<init>(ResourcesXMLParser.java:109)
at org.glassfish.admin.cli.resources.ResourcesManager.createResources(ResourcesManager.java:67)
at org.glassfish.admin.cli.resources.AddResources.execute(AddResources.java:106)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
at javaapplication4.Main.main(Main.java:55)
.
と確かに、示されたパスには一般的なPathにadd-resources path\to\sun-resources.xml
ディレクトリはありません...
私のコードに何か問題がありますか?( glassfish-embedded-all-3.0.1.jar )
ありがとう
解決
組み込みGlassFishの組み込みファイルシステムを指定し、欠落していたファイルを使用して/path/to/my/glassfish/lib/dtds
フォルダを事前に作成しました。
EmbeddedFileSystem.Builder efsb = new EmbeddedFileSystem.Builder();
efsb.autoDelete(false);
efsb.installRoot(new File("/path/to/my/glassfish"), true);
EmbeddedFileSystem efs = efsb.build();
Server.Builder builder = new Server.Builder("test");
builder.embeddedFileSystem(efs);
builder.logger(true);
Server server = builder.build();
server.addContainer(ContainerBuilder.Type.all);
server.start();
.
とGlassFishに依頼していない実行終了時にフォルダを削除しないでください。
他のヒント
これが可能ではありません、asadmin
を渡す)は言及していません。
しかし、sun-resources.xml
ファイルをデプロイすることではなく、事前設定されたdomain.xml
を使用します。結果は似ているはずです。 Sun GlassFish Enterprise Server V3 Embedded Serverガイド:
既存の
を使用する>sun-resource.xml
ファイル既存の
domain.xml
ファイルを使用しています 埋め込みを設定する必要がないようにします プログラムでエンタープライズサーバー あなたの申請。あなたの申請 からドメイン構成データを取得します 既存のdomain.xml
ファイル。あなたはできる を使用してこのファイルを作成します ANの管理インターフェース インデド済みエンタープライズのインストール サーバ。既存のものを指定するdomain.xml
ファイルを呼び出しますdomain.xml
、installRoot
、OR のinstanceRoot
メソッドconfigurationFile
クラスまたは これらの方法の組み合わせ
ドキュメントは、これを行う方法を示すコードサンプルを提供します(かなり簡単であるべきです)。