2013-07-09 3 views
0

다른 포틀릿 (포틀릿 B)에서 포틀릿 (포틀릿 A)의 서비스를 사용하려고합니다. 서비스의 jar 파일 (포틀릿 A)을 \tomcat-7.0.27\webapps\ROOT\WEB-INF\lib에 넣고 다른 포틀릿 (포틀릿 B)의 표시 플러그인 packages.xml에이 jar를 포함 시켰습니다.다른 Liferay 플러그인에서 포틀릿 서비스 사용

우리는 외부 데이터베이스를 사용하고 있습니다. 즉, portlet-spring.xml을 변경했습니다.

실제 서비스 (포틀릿 A)가 포함 된 포틀릿을 배치하고 서비스의 일부 메소드를 호출하는 경우 해당 서비스는 fine &이라고하며 데이터를 반입합니다. 다른 포틀릿 (포틀릿 B)에 동일한 메소드를 작성하면 데이터를 가져옵니다. 그러나 실제 서비스 포틀릿 (포틀릿 A)에서 호출되지 않은 다른 포틀릿 (포틀릿 B)에 메소드를 작성하려고하면 데이터가 반입되지 않습니다. 항상 공백이 있습니다.

어떤 이유가 될 수 있는지 제안 할 수 있습니까?

포틀릿이 매우 크지 않기 때문에 모든 포틀릿을 같은 병에 넣을 수 없습니다 (약 35 개).

lib 디렉토리에 jar 파일을 넣는 것보다 더 나은 해결책이 있습니까? 플러그인의 WEB-INF/liferay-plugin-package.properties을 편집하고 다른 플러그인에 대한 종속성을 추가 :

럭키 보이 댓글
+0

당신의 항아리가 "\ tomcat-7.0.27 \ lib \ ext"디렉토리 안에 있어야한다고 생각합니다. –

답변

3

, 하나의 옵션은 tomcat/lib/ext

또 다른 옵션은 명시 적 종속성을 이름을 지정하는 것입니다, 전역 클래스 경로에 * -service.jar 파일을하는 것입니다 - 예를 들어

required-deployment-contexts=my-other-portlet,my-custom-hook 

이것은 의존성이 이미 배포되면이 선언이 포함 된 플러그인 만 배포합니다 있는지 확인하며, 그것은 또한 "그 자체"에 자신의 서비스 항아리를 복사합니다 :이 플러그인 필요 my-other-portlet-service.jarmy-custom-hook-service.jar은 자동으로 사용 준비가 된 자신의 웹 응용 프로그램에 저장됩니다.

+0

안녕하세요, Olaf Kock, 나는 두 가지 방법을 모두 시도해 봤습니다. 그러나 이것들과 나는 또 다른 문제에 직면하고 있습니다. 포틀릿 B에서 XXXXImpl 클래스를 찾을 수 없습니다. XXXX와 같은 객체를 만들어야합니다. xxxx = new XXXXImpl(); . 동일한 제안 사항. – Danish

+0

아니, 죄송합니다. * Impl 클래스는 서비스 인터페이스의 일부가 아닙니다. 서비스 빌더는 * -service.jar의 일부가 아닌 플러그인의 WEB-INF/src 폴더에 있습니다. 이것은 의도적으로 설계된 것이며 이러한 클래스에 대한 액세스 권한이 있다고 가정해서는 안됩니다. 객체 생성을 서비스 클래스에 위임 할 수 있으며 서비스가 처녀 프로젝트에 XXXWrapper로 끝나게 할 수 있습니다. –

+0

XXXX xxxx = XXXX LocalServiceUtil.createXXXXX (-1 또는 0) 데이터베이스 항목을 만들지는 않지만 새 XXXXImpl()을 말하는만큼 좋은 빈 인스턴스를 반환합니다. 기본 키가 여러 개있는 테이블을 가지고있는 경우 xxxxpk 개체를 만들고 XXXXLocalServiceUtil.createXXXXX의 생성자에 전달합니다. 고맙습니다 ... – Danish