2017-11-13 11 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 

읽기 문서를 얻을이 위임 서버가 핵심 포털 유틸리티에 액세스 할 수 있다는 것, 그러나 간단한 위임 서블릿을 받고 아무 문제 없습니다 나는 틀릴 수 있 었는가. 도움이나 조언을 주시면 감사하겠습니다.

<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 포털 7.0.3 GA4 – losalo

답변

1

이 샘플 서블릿에서보세요 서블릿

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에서이 자사의 정의입니다. 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