当我尝试使用servicebuilder构建liferay服务时出现空指针异常

时间:2011-12-28 12:13:16

标签: java liferay portlet portal liferay-6

我有一个“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而且服务没有构建。

2 个答案:

答案 0 :(得分:1)

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

此时,只有一个&lt; entity&gt;代码示例中的元素。它没有列,也没有定义主键列。在这种情况下,代码生成不可行。

答案 1 :(得分:0)

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

我会阅读这篇Liferay维基文章,这应该会让你顺利上路。

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

从此处获得生成的服务jar后,将其放在tomcat类路径中,以便其他portlet可以访问该服务。