2013-04-15 2 views
1

우리는 클라이언트에 EAR로 배포되는 엔터프라이즈 응용 프로그램을 작성했습니다. 이 클라이언트에서 , 우리 webd의 eveloppers은 (공식적으로)글래스 피쉬의 EAR에서 테스트 WAR 코드가 더 빠릅니까?

  1. 웹 애플리케이션으로 포장 다음 단계를 의미한다 전체 EAR 재배치의 무게없이 테스트하고 싶은 웹 애플리케이션 모듈이

그 단계 인해 다양한에 받는다는에 의해 구동된다 (모든 EJB, 웹 서비스, ... 재배치와) 완전히 글래스 피쉬의 귀를 설치 귀

  • 에 전쟁 포장 전쟁
  • 테스트, 일반적으로 약 2mn 걸릴. 이것은 매우 긴 지연입니다. 하지만 웹 개발을 위해 어떻게 줄일 수 있습니까? JRebel이 시도되었지만 혼합 된 결과를 보여주었습니다. 대개의 경우에는 정상적으로 작동하지만 대부분의 경우 개발자를 차단할 수도 있습니다 (나에게 국한되지 않음).

    나는 전쟁이 EAR과 분리되어 설치 될 수 있다고 생각했지만, 더 큰 개발 노력을 기울일지도 모른다.

    webapp 폴더를 Glassfish hotdeploy one에 링크하여 코드의 자동 재배포를 허용 할 수 있습니까?

    EDIT 1 분명히 내 WAR 웹 구성 요소는 EJB와 EAR의 일부 라이브러리에 의존합니다. 그러한 경우 어떻게하면 해당 WAR를 신속하게 배포/자동 배포 할 수 있습니까?

  • +0

    프로젝트 구조에 따라 다릅니다. WAR에 EAR lib 폴더 나 EJB에 대한 의존성이 없으면 WAR (또는 특정 웹 프로젝트) 만 배포하면됩니다. 종속성이있는 경우 EJB를 별도로 배포해야 할 수 있습니다. – unwichtich

    답변

    2

    왜 당신은 매번 maven으로 전쟁과 귀를 다시 포장해야합니까? 이클립스의 역동적 인 웹 프로젝트로 작업합니까? (실제로 귀하의 요구 사항을 충족하는지는 모르겠지만 모든 정보를 잘 알고있을 수도 있지만 세부 정보를 묻는 명성은 충분하지 않습니다.) =이 -DartifactId가 MavenTestWebapp은 =이 - 원형 - 웹 애플리케이션을 받는다는

    MavenTestWebapp 
    | 
    \--- JavaSources 
    |  \MyClass.java 
    | 
    \--- War 
    | | ---(pom.xml) 
    | \ --- src 
    |   \ --- main 
    |    \ --- webapp 
    |      | --- META-INF 
    |      \ --- WEB-INF 
    | 
    \(pom.xml) 
    

    전쟁의 디렉토리가 -DgroupId입니다 -DarchetypeArtifactId = org.yourgroup 생성 :

    MVN의 원형을 받는다는와 초안 웹 애플리케이션을 생성 프로젝트의 모듈. JavaSources 디렉토리를 추가하여 명확하게했습니다. 또한 부모 프로젝트에서 의존성 라이브러리를 처리하기 위해 전쟁 디렉토리에 pom.xml을 추가했습니다. 여기에 전쟁 디렉토리에 치어에 대한 예입니다 : 실행 종속성 libs와를 수집하기 위해

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
        <modelVersion>4.0.0</modelVersion> 
    
        <parent> 
         <groupId>org.yourgroup</groupId> 
         <artifactId>MavenTestWebapp</artifactId> 
         <version>1.0-SNAPSHOT</version> 
         <relativePath>../pom.xml</relativePath> 
        </parent> 
    
        <groupId>${project.parent.groupId}</groupId> 
        <artifactId>${project.parent.artifactId}-war</artifactId> 
        <name>${project.parent.artifactId}-war</name> 
        <packaging>war</packaging> 
        <version>1.0-SNAPSHOT</version> 
        <url>http://maven.apache.org</url> 
        <build> 
         <finalName>MavenTestWebapp-war</finalName> 
         <plugins> 
          <plugin> 
           <artifactId>maven-war-plugin</artifactId> 
           <version>2.1.1</version> 
           <executions> 
            <execution> 
             <phase>compile</phase> 
             <goals> 
              <goal>inplace</goal> 
             </goals> 
            </execution> 
           </executions> 
           <configuration> 
            <archiveClasses>true</archiveClasses> 
            <warSourceDirectory>${basedir}/src/main/webapp/</warSourceDirectory> 
            <dependentWarExcludes> 
             WEB-INF/classes/,META-INF/**,WEB-INF/web.xml,**/*.jar,pom.xml 
            </dependentWarExcludes> 
            <warSourceExcludes>/src/main/webapp/,target/,WEB-INF/classes/**/*.*</warSourceExcludes> 
            <webResources> 
             <resource> 
              <!-- this is relative to the pom.xml directory --> 
              <directory>${basedir}</directory> 
              <!-- the list has a default value of ** --> 
              <includes> 
              <include>pom.xml</include> 
              </includes> 
             </resource> 
            </webResources> 
           </configuration> 
          </plugin> 
         </plugins> 
        </build> 
    </project> 
    

    MVN 명령을 컴파일합니다. 그런 다음 lib 디렉토리가 webapp/WEB-INF 디렉토리에 작성됩니다.

    MavenTestWebapp 
    | 
    \--- JavaSources 
    |  \MyClass.java 
    | 
    \--- War 
    | | ---(pom.xml) 
    | \ --- src 
    |   \ --- main 
    |    \ --- webapp 
    |      | --- META-INF 
    |      \ --- WEB-INF 
    |       \ --- libs 
    |         | --- dependency-lib1.jar 
    |         \ --- dependency-lib2.jar 
    | 
    \(pom.xml) 
    

    실제 포장 전에 junit 테스트와 다른 기능을 실행할 때까지는 마빈을 사용해야하는 마지막 순간입니다. 그러나 지금은 테스트를 위해 Java 클래스를 컴파일하고 배포해야합니다 (올바르게?). Eclipse의 Dynamic Web Projects는 glassfish에 Java 클래스를 빠르게 재배포 할 수있게 해줍니다.

    작업 영역에서 새로운 동적 웹 프로젝트를 만들고 동적 웹 프로젝트를 만듭니다.웹 모듈 구성 단계에서 JavaSources을이 프로젝트의 Java Source Directory로 설정하십시오. 웹 응용 프로그램을 콘텐츠 디렉토리로 설정하십시오.

    이 웹 응용 프로그램에는 웹 개발자가 작업하고 컴파일하고 배포해야하는 모든 클래스가 포함되어 있습니다. 또한 libs 및 컴파일 된 클래스가있는 전체 war 모듈을 포함합니다.

    작업 영역에서 새 엔터프라이즈 응용 프로그램 프로젝트를 만듭니다 귀를 만듭니다. webapp을이 프로젝트의 모듈로 추가하십시오.

    배포 서버보기에서 글래스 피쉬

    에 EAR, 글래스 피쉬 서버를 마우스 오른쪽 단추로 클릭하고 MavenTestWebapp 웹 모듈을 포함하는 새로 생성 된 EAR을 추가합니다. 자바 클래스를 수정할 때마다이 EAR을 서버에 게시하십시오. 자동 게시를 허용 할 수는 있지만 일반적으로 짜증납니다.

    감사

    가 그것을 개선 할 수 있다면 더 나은 솔루션은, 나이 프로젝트에 적합하지 않는 경우, 만족 노하우를 할 경우. 나는별로 경험이 없지만 이전에 이런 종류의 구성으로 작업 해 왔으며 Java 소스를 신속하게 재배포 할 수 있습니다. 감사합니다. @ +

    관련 문제