2012-01-05 2 views
1

JSR 286 스펙에서 포틀릿을 포함하는 WAR에 web.xml 파일이 있어야합니까? 처음에는 그렇게 생각했지만 web.xml이없는 포틀릿을 작성하여 Liferay에 배치하고 완벽하게 작동했습니다. 그래서 그것은 Liferay의 확장 (또는 버그)입니까, 아니면 그러한 파일을 가질 필요가없는 것입니까?JSR-286 포틀릿에는 WAR 파일에 web.xml 파일이 필요합니까?

+0

내가 아는 한 'portlet.xml' 만 있으면됩니다. – home

답변

1

마찬가지로 Olaf는 포틀릿은 웹 애플리케이션 일뿐입니다. Liferay에는 포틀릿이 자동으로 배치 될 때 트리거되는 리스너가 있습니다. 그것은 전쟁을 폭발시키고 web.xml과 필요한 컨텐츠를 추가합니다. 소스가 있다면 논리를 확인할 수 있습니다. 클래스 이름은 PortletDeployer이고 메소드는 getServletContent입니다. web.xml을 추가하고 채우면 FileUtil.touch를 사용하여 파일을 터치하기 만하면됩니다.

+0

코드 [여기] (https://github.com/liferay/liferay-portal/blob/master/portal-impl/src/com/liferay/portal/tools/deploy/PortletDeployer.java#L239)를 볼 수 있습니다. . 따라서 'web.xml'이없는 포틀릿 WAR은 배포자에서 가져옵니다. 글쎄, 이건 내 구체적인 질문에 대답하지 않지만 어쨌든 그것을 명확히! 사양에 대해 알고 싶지만 귀하의 대답은 지금 충분합니다. – brandizzi

1

필자는 스펙을 파헤쳐 야겠다. 내 생각에 포틀릿 애플리케이션은 애플리케이션 서버에 가장 먼저 배치되었다. 서블릿 스펙에 web.xml이 필요하면이 요구 사항을 충족해야합니다. WAR 파일 형식 또는 web.xml을

을 Liferay Apperver 웹 응용 프로그램을 배포 한 번만에서 시작된다.하는 Liferay 자체를 권장 요구하는 경우 그렇지 않으면 애플리케이션 서버가 WAR를 배포 할 것 (그것은 더 많거나 적은 질문입니다 web.xml을 신경 쓰지 않는다.

JSM 이 web.xml에 대한 진술을하지 않을 것을 기대하면서,이 주장에 기반을두고 (그리고 스펙을 보지 않고서) 나는 교양있는 추측을하고있다. 그러나 서블릿 스펙을 참조하기 때문에 web.xml이 필요/추천/언급 될 수 있습니다.

Appservers가 필요로하거나 Appservers가 누락 된 경우 어떻게 작동하는지는 또 다른 이야기입니다.

관련 문제