2012-12-06 46 views
2

(如果是這樣,怎麼辦?)可以在servlet中使用portlet服務嗎?

我有一個使用服務構建器爲其他portlet提供服務構建的Liferay portlet,我想知道是否可以在我的servlet中使用相同的jar。到目前爲止,我還沒有成功。我嘗試創建一個portlet,並嘗試從該portlet調用相同的服務,但這也無法使用。所以我必須在配置允許使用這些服務的portlet和servlet中缺少一些東西。我錯過了什麼?

運行的Liferay 6.1.1的Tomcat在Windows(7)包,如果有差別......

+0

這可能是值得檢查https://www.liferay.com/web/antonio.junior/blog/-/blogs/12168124(確保在你的portlets service.xml中,實體的遠程服務集爲true) – 2012-12-06 14:33:12

+0

謝謝Rhod。 Web Services並不完全是我期待的方向。在我看來,如果您開發大量代表完整應用程序的portlet,則不需要複製每個portlet中所需的服務。您所需要的只是一個通用服務portlet,它將使這些服務可供其他portlet使用。但是我懷疑你不得不將這些服務公開爲Web服務來使它們可用。是不是可以放棄服務jar到你的lib文件夾並使用暴露的類? –

回答

4

確保您的servlet使用的Liferay的PortalDelegateServlet。否則,它將無法訪問Liferay服務API(最終由服務構建器生成的類的類使用它)。

<?xml version="1.0" encoding="UTF-8"?> 
<web-app ...> 
    ... 
    <servlet> 
     <servlet-name>my-servlet</servlet-name> 
     <servlet-class>com.liferay.portal.kernel.servlet.PortalDelegateServlet</servlet-class> 
     <init-param> 
      <param-name>servlet-class</param-name> 
      <param-value>org.example.YourOwnServlet</param-value> 
     </init-param> 
     <init-param> 
      <param-name>sub-context</param-name> 
      <param-value>do-something</param-value> 
     </init-param> 
    <servlet> 
</web-app> 

不要忘記填寫正確的初始化參數:

  • servlet-class是代表你的servlet
  • sub-context類是你的servlet應該聽

子上下文部署後,您的servlet將可通過以下URL訪問:

http://localhost:8080/delegate/do-something 
+0

您是否有使用PortalDelegateServlet的完整示例? –

相關問題