0

我有一个“ECLocalDataService.java”类。我正在尝试将它构建为 liferay 本地服务,以便我可以使用 ServiceLocator.findService() 从所有 portlet 和速度模板访问它。

我的 ECLocalDataService 有点像这样:

public interface ECDataLocalService {

    public java.lang.String getBeanIdentifier();


    public void setBeanIdentifier(java.lang.String beanIdentifier);

    @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
    public float getPriceBySKU(java.lang.String sku);
}

它的实现类是这样的:

import com.rosettastone.service.base.ECDataLocalServiceBaseImpl;

public class ECDataLocalServiceImpl extends ECDataLocalServiceBaseImpl {

    public float getPriceBySKU(String sku) {
        float price = 125.99f; 
        return price;
    }

}

我已经在我的 service.xml 中注册了我的 ECDataLocalService

<service-builder package-path="com.rosettastone">
    <author>rajeshp</author>
    <namespace>mycompany</namespace>

    <entity name="ECDataLocalService" local-service="true" remote-service="false" human-name="ECDataLocalService"></entity>

</service-builder>

现在,当我单击 Liferay Dev Studio 中的“BuildServices”图标时,它会引发 NullPointer 异常。它甚至没有显示它为哪个对象找到了 NullPointer,没有错误消息或日志消息,只是简单地显示 NullPointerException 并且没有构建服务。

4

2 回答 2

1
<entity name="ECDataLocalService" local-service="true" remote-service="false" human-name="ECDataLocalService"></entity>

目前,您的代码示例中只有一个 <entity> 元素。它没有列,也没有定义主键列。代码生成不可能在这些情况下工作。

于 2012-04-04T20:57:45.457 回答
0

build-services ant 任务用于从定义一个或多个表的 service.xml 构建服务。然后它会为您生成所有 Java 代码。没有必要先创建 Java 文件,事实上我认为这行不通。

我会阅读这篇 Liferay wiki 文章,这应该会让你上路。

http://www.liferay.com/community/wiki/-/wiki/Main/Service+Builder

一旦你得到了由此产生的服务 jar,就把它放在你的 tomcat 类路径中,这样其他 portlet 就可以访问该服务。

于 2011-12-28T17:44:34.093 回答