2014-09-01 1 views
2

openshift에 postgres에 액세스 할 수있는 tomcat7 확장 가능 응용 프로그램이 있습니다. 확장 가능한 응용 프로그램을 사용하여 opensshift에서 tomcat 풀용 JDBC 드라이버를 어디에 배치해야합니까?

나는 등 카탈리나의 속성을 업데이트, 필요한 JDBC 드라이버로 $ OPENSHIFT_DATA_DIR 아래에 lib 폴더 생성이 블로그 https://www.openshift.com/blogs/jndi-tomcat-configuration-howto

의 지침을 따라합니다.

그리고 연결 풀링을 사용하면 매우 잘 작동합니다.

그러나 새로운 장비가 시작될 때 일부 하중 테스트를 수행 할 때 404 오류가 발생하기 시작했습니다.

openshift의 방법은 새로운 기어를 생성하기 때문에 발생
Caused by: java.sql.SQLException: No suitable driver 
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1445) 
    ... 27 more 

: 그것을 복사합니다에만 앱 배포 폴더를하지만 데이터 디렉토리를 오류를 조사, 나는 새로운 장비가 JDBC 드라이버를 찾는되지 않았 음을 발견했다. 나는 장비를 ssh로 관리했고 app-root/data 폴더는 비어있었습니다. 드라이버가 없으며 작동하는 응용 프로그램이 없습니다.

그렇다면 jdbc 드라이버를 추가 기어 스크립트에 배치하여 각 기어에 복사해야합니다. 아니면 다른 해결책이 있습니까?

또 다른 세부 사항이 있습니다. 저는 항상 webapps 폴더에 war 파일을 배포합니다. 내 항아리를 저장하는 데 사용할 수있는 응용 프로그램 배포 내에 일부 폴더가 있는지 궁금합니다. 애플 리케이션 배포에서 jar 파일을 직접 복사하려했지만 결과는 재앙이었습니다.

액션 후크를 사용하여 추가 장비를 제어 할 수있는 방법이 없지만 그러한 종류의 맞춤 설정에 대한 예나 참조를 찾을 수없는 것인지 궁금합니다.

+0

아마도 해결책은 jar를 복사하는 액션 후크를 구현하는 것입니까? 하지만 무슨 후크!? – atorres

답변

1

액션 훅이 문제를 해결했습니다! 먼저 action_hooks 폴더에 "pre_start_jbossews"라는 액션 훅을 생성하고 실행할 chmod를 생성했습니다. 이름은 양식 pre_start_ (cartrigde)이어야합니다. 그들은 여기에 설명되어 있습니다 http://openshift.github.io/documentation/oo_user_guide.html#action-hooks

을 후크 안쪽에 나는이 명령을 넣어 :

wget -P $OPENSHIFT_DATA_DIR/driver "http://central.maven.org/maven2/org/postgresql/postgresql/9.3-1100-jdbc41/postgresql-9.3-1100-jdbc41.jar" 

을 한 후 나는 드라이버 폴더 "$ {가리키는 catalina.home} /를 추가, 내 catalina.properties을 편집했다. ./app-root/data/driver/*.jar "

common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/../app-root/data/driver/*.jar 

그것은 분명 아니었지만, 새로운 기어가 만들어 질 때마다이 jbossews의 시작 스크립트는 또한 GEAR에서 실행됩니다. 실제로 장비가 개별 시스템으로 부팅되어 전체 OS가로드됩니다. 루트 장치에서 lib를 복사 할 수 없으면 여전히 maven에서 wedge 할 수 있습니다. 그러나 공통적 인 "데이터"폴더를 시작시 모든 기어에 복사하는 것이 더 쉬울 것이라고 생각합니다 (처음에는 기어 격리 아이디어를 깨는 것을 피하기 위해).

0

운전자는 항상 CATALINA_HOME/lib으로 가야합니다.

+0

opensshift tomcat 카트리지에서 lib 디렉토리를 변경할 수 없습니다. 그것은 synlink입니다. 따라서 블로그 작성자가 사용자 데이터에 다른 폴더를 만들고 catalina.properties 클래스 로더를 변경하는 것이 좋습니다.그러나이 폴더는 openshift가 비례 할 때 복제되지 않습니다. – atorres