مضمنة غلاسفيش 3:نشر الشمس الموارد.شمل فشل برمجيا
-
16-09-2020 - |
سؤال
وأود أن تكون قادرة على حزمة مشروع جبا-إجب-ويب كتطبيق مستقل ، باستخدام غلاسفيش جزءا لا يتجزأ من أبي.
لاستخدام طبقة جبا ، ولست بحاجة لنشر الشمس الموارد.تكوين شمل ، والتي ينبغي أن تكون ممكنة مع القيادة أسدمين add-resources path\to\sun-resources.xml
.لدي هذا الرمز للقيام بذلك:
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)
وبالفعل ، لا يوجد lib
الدليل على المسار المشار إليه ...
هل هناك شيء خاطئ في قانون بلدي?(أنا استخدم غلاسفيش-جزءا لا يتجزأ من جميع-3.0.1.جرة)
شكرا
المحلول
أنا حلها عن طريق تحديد نظام الملفات جزءا لا يتجزأ من غلاسفيش جزءا لا يتجزأ، و بريبوبوليد /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();
وطلب غلاسفيش عدم حذف المجلد في نهاية التنفيذ.
نصائح أخرى
لست متأكدا من أن هذا ممكن, تشغيل asadmin
الأوامر باستخدام واجهة برمجة تطبيقات خادم صن غلاسفيش المضمنة لا يذكر مثل هذه الحالة استخدام (تمرير sun-resources.xml
).
ولكن أود أن استخدام مسبقا domain.xml
بدلا من محاولة نشر sun-resource.xml
ملف ، يجب أن تكون النتيجة مماثلة.من ال صن غلاسفيش خادم المؤسسة الإصدار 3 دليل الخادم المضمن:
باستخدام القائمة
domain.xml
ملفباستخدام القائمة
domain.xml
ملف يتجنب الحاجة إلى تكوين جزءا لا يتجزأ خادم المؤسسة برمجيا في التطبيق الخاص بك.التطبيق الخاص بك يحصل على بيانات تكوين المجال من القائمةdomain.xml
ملف.يمكنك إنشاء هذا الملف باستخدام واجهات إدارية ل تركيب مؤسسة غير مجمعة الخادم.لتحديد القائمةdomain.xml
ملف ، استدعاءinstallRoot
,instanceRoot
, ، أوconfigurationFile
طريقةEmbeddedFileSystem.Builder
فئة أو مزيج من هذه الأساليب.
توفر الوثائق نماذج التعليمات البرمجية التي توضح كيفية القيام بذلك (يجب أن تكون واضحة جدا).