문제

Glassfish 임베디드 API를 사용하여 jpa-ejb-web 프로젝트를 독립형 애플리케이션으로 패키징할 수 있기를 원합니다.

JPA 계층을 사용하려면 sun-resource.xml 구성을 배포해야 합니다. 이는 다음과 같이 가능해야 합니다. asadmin 명령 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)

그리고 실제로는 없습니다 lib 표시된 경로의 디렉터리...

내 코드에 뭔가 문제가 있는 걸까요?(나는 사용한다 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 GlassFish Embedded Server API를 사용하는 명령 그러한 사용 사례를 언급하지 않습니다( sun-resources.xml).

하지만 저는 미리 구성된 domain.xml 배포하려고 하는 대신 sun-resource.xml 파일을 열면 결과는 비슷해야 합니다.로부터 Sun GlassFish Enterprise Server v3 내장 서버 안내서:

기존 사용 domain.xml 파일

기존 사용 domain.xml 파일은 응용 프로그램에서 프로그래밍 방식으로 임베디드 엔터프라이즈 서버를 구성 할 필요가 없습니다.응용 프로그램은 기존에서 도메인 구성 데이터를 얻습니다 domain.xml 파일.비 침전 된 엔터프라이즈 서버 설치의 관리 인터페이스를 사용 하여이 파일을 만들 수 있습니다.기존을 지정하려면 domain.xml 파일을 호출하고 installRoot, instanceRoot, 또는 configurationFile 의 방법 EmbeddedFileSystem.Builder 이러한 방법의 클래스 또는 조합.

문서에서는 이를 수행하는 방법을 보여주는 코드 샘플을 제공합니다(매우 간단해야 함).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top