2012-01-26 20 views
6

¿Alguien tiene un enlace a un resumen conciso de lo que hace que un portlet "JSR-286 compatible" frente a ser sólo "JSR-168 compatible". Tengo una copia de la especificación y eso es cualquier cosa menos conciso, por lo que vincular la especificación no es una respuesta útil. He buscado en la web durante una hora y no he encontrado nada que sea claro (aparte de la especificación, que por supuesto requiere que lea las especificaciones anteriores también, y luego elimine las "nuevas características" de la "requerida cumplimiento ".¿Qué hace que un portlet JSR-286 sea compatible?

Particularmente he encontrado que hay bastante confusión por la necesidad de web.xml, que parece provenir de personas que usan Liferay y no se dan cuenta de que Liferay está cayendo en un web.xml para . ellos

Do JSR-286 portlets require a web.xml file in their WAR files?

Lo que realmente me gusta es algo que contiene una o más de las siguientes listas:

  • cosas que hay que hacer para una JSR-168 para hacer que se convierta en JSR-286 que cumplen
  • cosas que no debe hacer, que causarían un portlet JSR-286 de otro modo compatible a ser considerado sólo JSR-168.

Puede dejar "use portlet-app_2_0.xsd" fuera de la lista, ya que considero esa parte obvia.

Estoy abierto a la respuesta de que ambas listas están vacías aparte de la DTD/xsd para portlet.xml, y la diferencia está solo en lo que el portal admite, pero respalde esa afirmación con un enlace u otra referencia .

La razón por la que me preocupan es porque veo publicaciones sobre portlets Vaadin en Liferay que implican que algunas características no están disponibles para portlets JSR-168 ... También puede ser que cierta lógica en Liferay cambie en función de la versión de portlet. xml ve, pero tampoco lo he confirmado, así que sería información interesante también, pero no la respuesta a mi pregunta.

+0

Relectura de la publicación del foro He vinculado en mi comentario a continuación, me he dado cuenta de que aunque el cartel está hablando de "portlets compatibles", él atribuye las diferencias a la ApplicationPortlet2. Ya lo extendí, así que supongo que obtendré los beneficios de los que habla. Sin embargo, todavía me pregunto si hay algún significado para la frase "portlet compatible con JSR 286" (aparte de las incompatabilidades hacia atrás mencionadas a continuación). – Gus

Respuesta

3

Según this doc, pero también es mencionado en jsr286:

El JSR 286 spec (portlets 2.0) no se rompa la compatibilidad binaria con JSR168 (portlets 1,0). Esto significa que todos los portlets escritos contra la especificación de Portlet 1.0 pueden ejecutarse sin cambios. Las únicas excepciones a esta regla son:

renderResponse.setContentType ya no es necesario antes de llamar a getWriter o getOutputstream. En JSR168, al llamar a getWriter o getOutputstream sin establecer previamente el tipo de contenido, se produjo una IllegalStateException.

getProtocol para servlets/JSPs incluidos devuelve 'HTTP/1.1', en JSR168, devolvió nulo.

Así que, mientras el portlet JSR 168 no depende del valor devuelto por getProtocol() que estás a salvo (es decir, todos los portlets JSR 168 es un portlet JSR286).

Las publicaciones que ve son lógicas, ya que jsr286 es una especificación más nueva y hay algunas características que hacen que el portlet jsr268 no sea un portlet jsr168.

+0

Sí, he visto esa sección de la especificación, y responde a una pregunta ligeramente diferente. Esto responde a la pregunta "¿Se ejecuta el portlet en un portal compatible con 286?" Sin embargo, veo personas que hablan de "286 portlets compatibles", lo que parece indicar que, si bien se pueden ejecutar 168 portlets, liferay los trata de otra manera: https: // vaadin. com/forum/-/message_boards/view_message/131405 # _19_message_151875 – Gus

+0

Tu respuesta contiene parte de mi respuesta, así que te he subido de categoría por ahora. Todavía estoy tratando de decidir si cuenta como una respuesta completa. Creo que parte del problema es que la fraseología me ha inducido a error en otras publicaciones, y estaba pensando que había una diferencia mayor, por lo que probablemente no haya una gran respuesta a mi pregunta en primer lugar. Si nadie puede agregar a mi lista a continuación, podría darle crédito a pesar de que no era información nueva para mí, sino más bien algo que ya había encontrado pero omití de mi pregunta. – Gus

+0

sí, es muy engañoso. de todos modos, no creo que deba preocuparse por jsr168 4 años después del lanzamiento final de jsr286, especialmente en el contexto liferay – soulcheck

1

Ok, dado que no he encontrado nada nuevo que distinga un portlet 2.0 de un portlet 1.0 (aparte de usar servicios adicionales y) comenzaré las listas de mi respuesta aquí.

que hacer:

  1. se ajustan a la XSD 2.0 para portlet.xml (xmlns = "http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd")

no debe hacer:

  1. Confiar en getWriter lanzar una excepción si renderResponse.setContentType no ha sido llamado todavía. (Parece poco probable de todos modos)
  2. Confiar en getProtocol() devolviendo un valor nulo

El resultado es, si simplemente convertir su portlet.xml, que ahora está "286 conforme" a menos que se basó en los dos elementos de la segunda lista para el flujo de su programa. No puedo encontrar nada más, pero si alguien encuentra otro artículo para estas listas, edítelo.

Cuestiones relacionadas