【问题标题】:Liferay Service for Business LogicsLiferay 业务逻辑服务
【发布时间】:2017-05-20 19:11:00
【问题描述】:

我想澄清一个疑问。我正在创建自己的服务类来操作数据。我应该在类级别(在 MVCPortlet 中)创建此服务实例还是在我的 processAction/doView 方法中创建新实例。 使用实例级别时是否存在线程安全问题。

Fg:

public class MvcCycle extends MVCPortlet {

    int counter;
    LdapService ldapservice;

    @Override
    public void init() throws PortletException {
        counter=0;
        ldapservice = new LdapService(); // Option 1
        super.init();
    }

    @Override
    public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
        // TODO Auto-generated method stub
        System.out.println("Counter hits "+ ++counter);
        // 
        LdapService ldapservice = new LdapService(); // Option 2
        ldapservice.authUser(request.getParameter("email"));
        // -- some code--
        super.doView(renderRequest, renderResponse);
    }

    @Override
    public void destroy() {
        System.out.println("Last counter "+counter);
        counter=0;
        super.destroy();
    }

}

    class LdapService{
         public boolean authUser(String email){
              if(//logic to authenticate user){
                   return true;
              }else{
                   return false;
              }
         }
    }

在这里,我的 ldapservice 只启动一次。因此,当多次点击时。选项 1 或选项 2 哪个代码在这个时候是有益的。

希望我已经解决了我的问题。

【问题讨论】:

  • 为什么不使用服务构建器定义服务类并根据您的实现进行自定义。
  • +1 使用 ServiceBuilder。另一种选择是删除它:您的示例代码根本没有使用它,因此它毫无意义。
  • 您好,此服务不适用于数据库交互。它将用于数据操作。

标签: liferay liferay-6


【解决方案1】:

跟进您的评论:总的来说:这取决于。我们没有足够的信息给你空白的架构建议。

在 Liferay 的上下文中,使用服务构建器可能是有意义的,即使您没有数据库交互。只需创建一个空实体,您将拥有一个没有持久性的服务。

<entity name="MyService" local="true"/>

就是这样。现在执行 MyServiceLocalServiceImpl 添加你就完成了

在您澄清后编辑:它没有任何区别。我仍然建议在您的portlet 中实例化,因为这会使您的portlet 依赖于服务实现。例如。我仍然选择服务生成器。

您还询问线程安全性,这也取决于您的实现。您的示例代码是线程安全的,但实际代码可能不是。你的判断。

【讨论】:

  • 谢谢Olaf,我只是想创建自己的服务层来操作数据或一些业务逻辑。我的项目中有自己的服务构建器服务,但我不想在这些服务中执行该代码。
  • 在这种情况下,您没有在问题中提供足够的信息。事实上,在你的内容之后,我仍然不知道你的意图和接受标准
  • 我已经更新了这个问题。请给我您宝贵的意见。谢谢
猜你喜欢
  • 2010-12-24
  • 2012-01-13
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 2011-02-17
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多