2012-09-10 4 views
6

포틀릿에 여러 개의 jar를 사용하고 있습니다 (예 : c3p0). 이제 모든 포틀릿 lib 폴더에 항아리를 넣지 않으려합니다. 여러 포틀릿 내에서 하나의 jar 파일을 공유하려면 어떻게합니까? 그리고 Eclipse IDE에 이들을 어떻게 통합해야합니까? 외부 항아리를 추가하거나 하나의 전용 프로젝트에 넣고 거기에 포함 시키십시오.여러 포틀릿에서 jar를 공유하는 방법은 무엇입니까?

+0

안녕하세요 Strauberry, 나는 당신이 변화하는 JAR 문제를 해결할 수있는 해결책을 가지고있을 것입니다. 나는 똑같은 상황을 겪었습니다! – Jonny

답변

6

또 다른 해결책은 당신이 여기를 배치하면 다음을 Liferay 개발자 Studio 또는을 Liferay IDE를 사용하는 경우 (포틀릿 liferay-plugin-package.properties에서 포틀릿에 대한 종속성으로 JAR을 추가 할 수 있습니다 ../liferay-portal-<version>/tomcat-<version>/webapps/ROOT/WEB-INF/lib

아래에 넣어하는 것입니다 이에 대한 멋진 GUI가있다.)

그런 다음 배포를하는 Liferay는 포틀릿 WEB-INF/lib

내가 믿는이는 그 일을 위해하는 Liferay 지원 메커니즘이며, JAR 파일이 포틀릿에 복사되기 때문에 다시 시작할 필요가 없습니다에 ROOT/WEB-INF/lib에서 필요한 JAR 파일을 복사합니다 배포시 classpath.

+0

안녕 조니, 멋지다! 한 가지 질문 만 남았습니다. 개발 중에 내 컴퓨터에 jar 파일을 어디에 두어야합니까? 내 항아리 파일에는 (물론 하하)의 메서드를 사용하려는 클래스 파일이 있습니다. 내 프로젝트에 이들을 "외부 Jars"로 추가하여 Java 컴파일러가 액세스하도록 abled합니까? – strauberry

+0

내 Liferay Plugins-SDK에서 util/additional-libs 폴더 아래에 내가 가장 적합한 곳에 배치 할 것입니다. 또한 JAR을 컴파일하고 ROOT/WEB-INF/lib에 JAR을 복사하는 개미 파일을 각각 하나씩 작성합니다. 따라서 포틀릿을 다시 배포하면 업데이트 된 JAR이 이미 포틀릿에 복사 할 수있는 올바른 위치에 있습니다. 그러나 Liferay IDE를 사용하고 있지 않다면, "빌드 경로 구성"섹션에서 외부 JAR로 추가하십시오 ... 그리고 JAR을 자동으로 선택하기 때문에 Liferay IDE를 체크 아웃하십시오! :) – Jonny

2

내가 생각할 수있는 한 가지 방법은 모든 것을 글로벌 경로에 넣는 것입니다.

예 : Tomcat에서 ../liferay-portal-<version>/tomcat-<version>/lib/ext에 배치 할 수 있으며 Eclipse에서 server-runtime 라이브러리를 구성하면 build-path에 이러한 jar 파일을 갖게됩니다.

link도 도움이 될 수 있지만 *-service.jar에 대해 말하고 있지만 어떤 포틀릿에서 다른 병을 사용할 수 있는지 확신하지 못합니다.

+0

답변 해 주셔서 감사합니다. 브라우저 인터페이스를 사용하여 배포하는 방법이 있습니까? 나는 수동 복사 및 붙여 넣기와 재시작이 매우 불안정해질 수 있도록 일반적으로 자주 사용되는 jar 파일을 매우 자주 변경하고있다. (0125). – strauberry

+0

jars는 글로벌 클래스 경로에 들어가기 위해 서버를 다시 시작해야한다. 귀하의 요구 사항을 달성하기위한 다른 방법에 대해서는 알지 못합니다. 서버를 다시 시작하지 않고도 jar를로드하는 데 도움이되는 도구가 있기는하지만 이러한 도구를 찾으려고 할 수도 있습니다. –

+3

Tomcat/lib/ext에 저장하면 모든 웹 앱이 동일한 클래스 로더에 의해로드 된 동일한 병을 공유하게됩니다. 웹 응용 프로그램간에 클래스의 인스턴스를 전달하는 경우 (예를 들어 세션을 통해) 각 웹 응용 프로그램에 고유 한 복사본이있는 경우 ClassCastExceptions로 실행할 수 있습니다. lib/ext를 사용할 때의 단점은 jar의 새 버전을 배포하기 위해 서버를 다시 시작해야한다는 것입니다. –

관련 문제