Jdbc 嵌入式Glassfish v3:以编程方式部署sun-resources.xml失败
我希望能够使用Glassfish嵌入式API将我的jpa ejb web项目打包为一个独立的应用程序 要使用JPA层,我需要部署sun-resource.xml配置,这应该可以通过Jdbc 嵌入式Glassfish v3:以编程方式部署sun-resources.xml失败,jdbc,jakarta-ee,glassfish,java-ee-6,glassfish-embedded,Jdbc,Jakarta Ee,Glassfish,Java Ee 6,Glassfish Embedded,我希望能够使用Glassfish嵌入式API将我的jpa ejb web项目打包为一个独立的应用程序 要使用JPA层,我需要部署sun-resource.xml配置,这应该可以通过add resources path\To\sun resources.xml实现。我有以下代码来执行此操作: String command = "add-resources"; ParameterMap params = new ParameterMap(); params.add("", "
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();
但是Glassfish拒绝了它:
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)
java.lang.Exception:…\gfembed69302014546233570tmp\lib\dtds\sun-resources\u 1\u 4.dtd(系统找不到指定的路径)
位于org.glassfish.admin.cli.resources.ResourcesXMLParser.initProperties(ResourcesXMLParser.java:163)
位于org.glassfish.admin.cli.resources.ResourcesXMLParser.(ResourcesXMLParser.java:109)
位于org.glassfish.admin.cli.resources.ResourcesManager.createResources(ResourcesManager.java:67)
位于org.glassfish.admin.cli.resources.AddResources.execute(AddResources.java:106)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl.docomand(CommandRunnerImpl.java:320)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl.docomand(CommandRunnerImpl.java:1176)
在com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
位于javaapplication4.Main.Main(Main.java:55)
实际上,在指定的路径上没有lib
目录
我的代码有问题吗?(我使用)
谢谢我不确定这是否可行,没有提到这样的用例(传递sun resources.xml
)
但是我会使用预配置的domain.xml
而不是尝试部署sun resource.xml
文件,结果应该是类似的。从:
使用现有的domain.xml
文件
使用现有的domain.xml
文件
避免了配置嵌入式系统的需要
在中以编程方式使用企业服务器
你的申请。你的申请
从中获取域配置数据
现有的domain.xml
文件。你可以
使用
系统的管理接口
非嵌入式企业的安装
服务器。指定现有的
domain.xml
文件,调用
installRoot
,instanceRoot
,或
configurationFile
EmbeddedFileSystem.Builder
class或
这些方法的组合
文档提供了代码示例,说明了如何执行此操作(应该非常简单)。我通过为嵌入式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不要在执行结束时删除文件夹。我不太同意你回答的第一部分,他们在页面上只提供了两个例子+但是,我建议预先配置system@Kevin:如我所写,我不确定,也没有真正使用此API(我在项目中使用了捆绑的
domain.xml
),因此我可能错了。事实上,现在我重新思考了一下,这确实是可能的。你是否试图建立一条绝对路径?