Jetspeed null PortletDefinition - PullRequest
       8

Jetspeed null PortletDefinition

0 голосов
/ 15 марта 2010

Я использую портал jetspeed, который содержит различные приложения с портлетами, и после недавней переустановки столкнулся с проблемой, при которой некоторые портлеты вернутся

Невозможно передать нулевое определение Portlet. в PortletEntity

Есть идеи, что вызывает эту проблему? Я немного исследовал, и кажется, что jetspeed запускает процесс, когда добавляются новые портлеты, где он создает сопоставления в своей БД (в моем случае, в derby). Если это не завершено, это, кажется, вызывает эту проблему. Правильно ли мое предположение? Если да, как я могу перезапустить этот процесс?

Большое спасибо

1 Ответ

1 голос
/ 16 марта 2010

Это исключение может быть вызвано несоответствующим именем портлета на вашей странице. Это часто происходит, когда приложение с портлетами развертывается с одним именем, но затем фрагмент страницы ссылается на другое имя, например, на вашей странице:

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

и при развертывании файла войны он называется, например, myApp-1.0-SNAPSHOT.war

Атрибут имени фрагмента должен иметь значение "$ {portlet.war.name} :: $ {portlet.name}. Первая часть ($ {portlet.war.name}) - это имя файла войны с портлетами , минус .war. Вторая часть основана на значении тега в файле portlet.xml.

Вы можете переименовать ваш файл войны или изменить определение страницы, чтобы включить версию. Я не рекомендую указывать номер версии во фрагменте, так как он может измениться.

Третье решение состоит в том, чтобы фактически изменить имя приложения с портлетами в вашем файле web.xml, установив параметр init с именем contextName в сервлете Jetspeed Container. В приведенном ниже примере установлено значение «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>
...