2013-11-21 4 views
6

Google AppEngine과 함께 여러 모듈을 사용하고 있으며 개발 서버 (java 버전)를 실행할 수 있는지 궁금해하여 다른 모듈에 할당 된 포트가 항상 동일합니까? 지금 그들은 무작위 인 것처럼 보인다. 그 항구를 결정할 수 있습니까? 모듈 사이에서 (개발의 관점에서) 지속 가능한 방식으로 의사 소통을 할 수 있기를 바랍니다. 현재 두 개의 모듈이 있다면 A와 B라고 부르 자. 모듈 A에서 노출 된 서비스를 모듈 B에서 사용하려고한다. 모듈 B에서 어느 URL에 접근해야하는지 쉽게 알 수 없다.개발 서버의 GAE 모듈

답변

-2

이 시나리오에서는 modules service이 유용 할 수 있지만 제대로 작동 할 것이라고 생각하지만 조금 다른 방식으로 문제를 해결합니다.

localhost의 모든 모듈을 실행하지만 다른 포트 (기본적으로 실행중인 로컬 appengine 인스턴스가 몇 개)에 빌드 스크립트가 수정되었습니다. 구성 정보 (IP : PORT)는 구성 파일에 저장되며 모든 모듈에서 쉽게 액세스 할 수 있습니다. 배포의 경우 응용 프로그램을 이어 보관 파일로 패키지합니다.

+0

구성 설정을 공유 할 수 있습니까? –

+0

어떻게 각 모듈마다 다른 포트를 설정할 수 있었습니까? – Gapipro

+2

이것은 기존의 관행 및 Google 고유의 문서와는 완전히 다른 접근 방식을 제안하므로 유용한 대답은 아닙니다. 가장 좋은 대답은 nomukaiki의 공식 답변으로, 공식 Google 샘플 앱의 기능과 정확히 같습니다. –

1

Google이이 문제에 대해 쉽게 접근 할 수 있다고 생각하지 않습니다. the modules service을 사용하고 LinkFactory과 같은 방법으로 getLinkToA(String)getLinkToB(String)과 같은 방법으로 도우미 클래스에 래핑하고 모듈에 대한 링크를 만드는 모든 곳에서 사용해야합니다.

the dispatch file을 사용하면 같은 (이상) 문제가 발생합니다. 라우팅이 개발 서버에서 작동하지 않기 때문에 프런트 엔드 앱의 일부가 실패 할 수 있기 때문에 이는 실제로 더 큰 문제입니다.

+0

쉽게 시작하는 것이 큰 문제라는 것을 인정해야합니다. –

8

JVM 매개 변수를 사용하여 각 모듈의 포트를 설정할 수 있습니다. 나는 MVN의에서 appengine을 실행하면

<plugin> 
    <groupId>com.google.appengine</groupId> 
    <artifactId>appengine-maven-plugin</artifactId> 
    <configuration> 
     <jvmFlags> 
     <jvmFlag>-Ddatastore.backing_store=${project.basedir}/target/local_db.bin</jvmFlag> 
     <jvmFlag>-Xdebug</jvmFlag> 
     <jvmFlag>-Dcom.google.appengine.devappserver_module.analysis.port=8081</jvmFlag> 
     <jvmFlag>-XX:MaxPermSize=512m</jvmFlag> 
     <jvmFlag>-agentlib:jdwp=transport=dt_socket,address=8001,server=y,suspend=n</jvmFlag> 
     </jvmFlags> 
     <enhancerApi>JPA</enhancerApi> 
     <fullScanSeconds>2</fullScanSeconds> 
    </configuration> 
</plugin> 

: devserver 다음 로그에 해당하는

-Dcom.google.appengine.devappserver_module.{module_name}.port=8081 

나는 (내 맞춤형 모듈이 "분석"이라고합니다) 다음과 같은 구성과에서 appengine-받는다는 - 플러그인을 사용 그 모듈은 다음과 같습니다 :

[INFO] INFO: Started [email protected]:8081 
[INFO] Jun 10, 2014 10:44:16 AM com.google.appengine.tools.development.JettyContainerService startHotDeployScanner 
[INFO] INFO: Full scan of the web app in place every 2s. 
[INFO] Jun 10, 2014 10:44:16 AM com.google.appengine.tools.development.AbstractModule startup 
[INFO] INFO: Module instance analysis is running at http://localhost:8081/ 
[INFO] Jun 10, 2014 10:44:16 AM com.google.appengine.tools.development.AbstractModule startup 
[INFO] INFO: The admin console is running at http://localhost:8081/_ah/admin 
[INFO] Jun 10, 2014 11:44:16 AM com.google.appengine.tools.development.DevAppServerImpl doStart 
[INFO] INFO: Dev App Server is now running 

나는 그것이 도움이되기를 바랍니다.

2

모듈의 appengine-web.xml 파일의 시스템 속성을 통해 모듈의 포트를 설정할 수 있습니다. 예를 들면 다음과 같습니다.

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> 
    <module>MY_MODULE</module> 
    <version>v1</version> 
    <threadsafe>true</threadsafe> 
    <system-properties> 
     <property name="com.google.appengine.devappserver_module.MY_MODULE.port" 
      value="8081"/> 
    </system-properties> 
</appengine-web-app>