2012-01-26 7 views
6

포틀릿을 "JSR-286 준수"로 만드는 것의 간결한 요약에 대한 링크가있는 사람은 "JSR-168 준수"일뿐입니다. 필자는 스펙의 사본을 가지고 있으며 스펙을 링크하는 것이 유용한 대답이 아니기 때문에 간결하지만 그 무엇도 아닙니다. 나는 한시간 동안 웹을 검색했고 명확한 것은 아무것도 발견하지 못했다. (스펙을 제외하고는 이전 스펙을 읽은 다음, "new features"를 "required" 컴플 라 이언 스 ".포틀릿 JSR-286을 준수하는 이유는 무엇입니까?

특히 나는 Liferay를 사용하는 사람들이 web.xml이 필요하다는 것을 알지 못하는 web.xml의 필요성에 대한 약간의 혼란이 있음을 발견했습니다. .

: 그

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

내가 좋아하는 정말 것 무엇 다음과 같은 목록 중 하나 이상을 포함 뭔가 당신은 JSR-168에해야 할

  • 상황은 다르게 JSR-286을 준수 포틀릿 만 JSR-168 고려해야 할 원인이 당신이 안 JSR-286을 준수
  • 것, 될 수 있도록합니다.

"portlet-app_2_0.xsd 사용"은 목록에서 제외해도 좋습니다.

두 목록이 모두 portlet.xml의 DTD/xsd와 별도로 비어 있으며, 차이점은 포털에서 지원하는 내용에 불과하지만 링크 또는 기타 참조로 그 주장을 다시 확인하십시오. .

내가 신경 쓰는 이유는 Liferay에서 JSR-168 포틀릿에 사용할 수없는 기능을 포함하고있는 Vaadin 포틀릿에 대한 게시물을 보는 것입니다. 또한 Liferay의 일부 로직이 포틀릿 버전에 따라 전환 될 수 있습니다. 그것은 볼 수 xml,하지만 그 중 너무 재미있는 정보가 될 것이라고하지만, 내 질문에 대한 대답을 확인하지 않았습니다.

+0

포럼 게시물 다시 읽음 나는 아래 주석에 링크되어 있습니다. 포스터가 "호환 포틀릿"에 대해 이야기하고 있지만, ApplicationPortlet2와의 차이점을 설명하고 있습니다. 나는 이미 그것을 확장 했으므로 그가 말하는 이점을 얻었을 것입니다. 그러나 "JSR 286 준수 포틀릿"이라는 문구에 의미가 있는지 궁금해합니다 (아래에 언급 된 역 호환성을 제외하고). – Gus

답변

3
this doc에 따르면

수 있으나, 그것은 또한 jsr286에서 언급 한 것 :

JSR 286 스펙 (포틀릿 2.0) JSR168 (포틀릿 1.0)와 바이너리 호환성을 아프게하지 않습니다. 즉, Portlet 1.0 스펙에 대해 작성된 모든 포틀릿은 변경되지 않고 실행될 수 있습니다. 이 규칙의 유일한 예외는 다음과 같습니다.

renderResponse.setContentType은 getWriter 또는 getOutputstream을 호출하기 전에 더 이상 필요하지 않습니다. JSR168에서 이전에 내용 유형을 설정하지 않고 getWriter 또는 getOutputstream을 호출하면 IllegalStateException이 발생합니다.

getProtocol 포함 된 서블릿/JSP의 경우 'HTTP/1.1'을 반환합니다. JSR168에서 null을 반환했습니다.

그래서 한 당신의 JSR168 포틀릿 getProtocol()에 의해 반환 된 값에 의존하지 않는 당신은 안전 해요 (즉, 모든 JSR168 포틀릿은 jsr286 포틀릿입니다).

jsr286이 최신 사양이고 jsr168 포틀릿이 아닌 jsr268 포틀렛을 만드는 몇 가지 기능이 있으므로 보이는 게시물은 논리적 인 것처럼 보입니다.

+0

예 스펙의 해당 섹션을 보았는데 약간 다른 질문에 답합니다. "포틀릿은 286 호환 포털에서 실행됩니까?"그러나 168 개의 포틀릿이 실행될 수 있지만 liferay (https : // vaadin) 방식으로 다르게 취급되는 것처럼 보이는 "286 호환 포틀릿"에 대해 사람들이 말하는 것을 봅니다. co.kr/forum/-/message_boards/view_message/131405 # _19_message_151875 – Gus

+0

귀하의 답변에는 제 답변이 일부 포함되어 있으므로 지금 답변을 드렸습니다. 나는 여전히 완전한 대답으로 간주할지 결정하려고하고있다. 나는 문제의 일부가 내가 다른 게시물의 어구에 의해 오도되었다고 생각한다. 그리고 나는 더 큰 차이가 있다고 생각했다. 그래서 처음에는 나의 질문에 대한 답이별로 없을 것이다. 아래 목록에 아무도 추가 할 수 없다면 내게 새로운 정보가 아니더라도 이미 내가 찾은 것이지만 내 질문에서 빠진 것이 라해도 당신에게 신용을 줄 수도 있습니다. – Gus

+0

예, 오해의 소지가 있습니다. 어쨌든 jsr168에 관심을 가져야한다고 생각하지 않습니다. jsr286의 최종 릴리스 이후, 특히 평생의 맥락에서 특히 – soulcheck

1

좋아요. 2.0 포틀릿과 1.0 포틀릿을 구별하는 새로운 기능이 없으므로 (여기에서는 추가 서비스 및을 사용하는 것을 제외하고) 여기에서 내 대답에 대한 목록을 시작하겠습니다.

는 꼭 해봐야 할 것 :

  1. 은 portlet.xml의 2.0 XSD 준수 (의 xmlns = "http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd")

는 안된다 :

  1. 는 renderResponse.setContentType 아직 호출되지 않은 경우로 getWriter 예외를 던지는에 의존하고 있습니다.
  2. 가 돌려주는 getProtocol()에 의존 (어쨌든 아닌 것 같습니다) 널 (null)

결론적으로 당신은 단순히 당신의 portlet.xml의 변환 경우가에서 두 항목에 의존하지 않는 한, 당신은 지금 "286 준수"입니다입니다 프로그램 흐름에 대한 두 번째 목록. 다른 것을 찾을 수 없지만 누군가이 목록에 대한 다른 항목을 찾으면 편집하십시오.