2017-11-13 5 views
0

私はLiferayの中に接続しているユーザのリストを知っている必要があるLiferayの中デリゲートサーブレットを構築しようとしているにアクセスすることはできません仕事とのLiferayに配備する場合こんにちはと言うが、私はUserLocalServiceUtilを使用しようとすると、私はこの例外にLiferayの委任サーブレットは</p> <p>私が持っていた(com.liferay.portal.service.UserLocalServiceUtilを使用して)Liferayのユーティリティ豆

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.liferay.portal.service.UserLocalService' is defined 

読書のドキュメントを取得することがデリゲートサーバーは、コアポータルユーティリティにアクセスできるようだが、それにシンプルな委任サーブレットを取得しても問題ありません私は間違っているかもしれません。助けや助言をいただければ幸いです。

これは、サーブレット

package mycompany.liferay; 

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import com.liferay.portal.service.UserLocalServiceUtil; 
import com.liferay.portal.service.UserServiceUtil; 
import com.liferay.portal.model.User; 
import java.util.List; 

public class myDelegateServlet extends HttpServlet { 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 

     try { 

      out.println("<!DOCTYPE html>"); 
      out.println("<html>"); 
      out.println("<head>"); 
      out.println("<title>My delegate Servlet</title>");    
      out.println("</head>"); 
      out.println("<body>"); 
      out.println("<h1>My delegate Servlet at " + request.getContextPath() + "</h1>"); 

      int userCount = UserLocalServiceUtil.getUsersCount(); 
      List<User> users = UserLocalServiceUtil.getUsers(0, userCount); 

      out.print("<br>Connected Users:<br>"); 
      for (User user : users) 
       { 
       out.print("<li>User: "+user.getUserId()+"</li>"); 
       } 

      out.println("</body>"); 
      out.println("</html>"); 

     } 
     catch (Exception e) 
      { 
      out.print("Exception! "+e.getMessage()); 
      }   
     finally { 
      out.close(); 
     } 
    } 
... 

あるとweb.xml

<servlet> 
    <servlet-name>myDelegateServlet</servlet-name> 
    <servlet-class>com.liferay.portal.kernel.servlet.PortalDelegateServlet</servlet-class> 
    <init-param> 
     <param-name>servlet-class</param-name> 
     <param-value>mycompany.liferay.myDelegateServlet</param-value> 
    </init-param> 
    <init-param> 
     <param-name>sub-context</param-name> 
     <param-value>myDelegateServlet</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
+0

のLiferayのバージョンにあなたです依存またorg.osgi:org.osgi.service.component.annotations:1.3.0

はJAX-RSのインターフェースを見て持っている必要がありますか? –

+0

Liferay Community Edition Portal 7.0.3 GA4 – losalo

答えて

1

でこのその定義は、このサンプルサーブレットを見てください。 https://github.com/liferay/liferay-blade-samples/tree/master/gradle/extensions/servlet。あなたが言及したアプローチは、6.2版の方が多くです。

OSGiコンポーネントを使用すると、簡単にサービスを挿入できます。

@Reference 
private UserLocalService servcie; 

あなたが

+1

私はまだOSGiソリューションを試していませんが、あなたはLiferayバージョンを正しく指し示してくれました。私が持っていた輸入品はバージョン6.xに対応していました。バージョン7では少し異なります。 Intead of "com.liferay.portal.service.UserLocalServiceUtil"正しいインポートは "com.liferay.portal.kernel.service.UserLocalServiceUtil"などです。今それは動作します。私はOSGiの方法をあなたが示唆したように試みていますが、それはかなり興味深いものです。どうもありがとう。 – losalo

関連する問題