2010-03-15 6 views
0

나는 다양한 포틀릿 애플리케이션을 포함하고 포틀릿의 일부가 반환하는 최근 다시 설치 한 후 문제가 건너 가지고 JetSpeed를 포털을 실행하고JetSpeed를 널 (null) PortletDefinition

PortletEntity

에 널 PortletDefinition 를 통과 할 수 없습니다

이 문제의 원인은 무엇입니까? 나는 약간의 조사를했고, jetspeed는 새로운 포틀릿이 DB (내 경우에는 더비)에 매핑을 만드는 위치에 추가 될 때 프로세스를 실행하는 것 같습니다. 이것이 완료되지 않으면이 문제가 발생하는 것 같습니다. 내 가정이 맞습니까? 그렇다면 어떻게이 프로세스를 다시 시작할 수 있습니까?

많은 감사

답변

1

이 예외는 페이지에 일치하지 않는 포틀릿 이름에있는 경우 문제가 발생할 수 있습니다. 포틀릿 응용 프로그램이 하나의 이름으로 배포 할 때 자주 발생하지만 다음 페이지 단편 페이지에 당신은, 예를 들어, 다른 이름을 참조 :

<fragment id="1234" type="portlet" name="myApp::myPortlet"> 

을 당신이 당신의 war 파일을 배포 할 때, 그것은 지명된다 예제 myApp-1.0-SNAPSHOT.war

조각의 이름 속성의 값은 "$ {portlet.war.name} :: $ {portlet.name}이어야합니다. 첫 번째 부분 ($ {portlet.war.name})는 포틀릿 war 파일의 이름에서 .war을 뺀 값입니다. 두 번째 부분은 portlet.xml 파일의 태그 값에서 가져옵니다.

war 파일 또는 cha 페이지 정의에 버전을 포함하십시오. 변경 될 수 있으므로 조각에 버전 번호를 넣는 것은 좋지 않습니다.

세 번째 해결 방법은 실제로 Jetspeed Container 서블릿에 contextName이라는 init param을 설정하여 web.xml에서 포틀릿 응용 프로그램의 이름을 변경하는 것입니다. 아래 예제에서 "myApp"로 설정 :

<servlet> 
    <description>MVC Servlet for Jetspeed Portlet Applications</description> 
    <display-name>Jetspeed Container</display-name> 
    <servlet-name>JetspeedContainer</servlet-name> 
    <servlet-class> 
     org.apache.jetspeed.container.JetspeedContainerServlet</servlet-class> 
    <init-param> 
     <param-name>contextName</param-name> 
     <param-value>myApp</param-value> 
    </init-param> 
    <load-on-startup>100</load-on-startup> 
    </servlet>