我有一个“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而且服务没有构建。
答案 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可以访问该服务。