如何在没有服务包装器的情况下覆盖liferay 7中的UserLocalServiceImpl?

如何在没有服务包装器的情况下覆盖liferay 7中的UserLocalServiceImpl?,liferay,liferay-7,Liferay,Liferay 7,我为UserLocalServiceImpl创建了服务包装器,并在服务包装器中声明了一个新方法。但是,当我使用UserLocalServiceUtil显式调用该方法时,编译器无法解析该方法。因此,请帮助我,告诉我如何重写UserLocalServiceImpl,以便我可以在其中定义新方法。Thanx提前..你可以这样做 UserLocalServiceUtil.getService() 然后将结果强制转换为自定义包装器类型。然后您应该能够调用新方法。这不起作用。您将更改Liferay已发布AP

我为UserLocalServiceImpl创建了服务包装器,并在服务包装器中声明了一个新方法。但是,当我使用UserLocalServiceUtil显式调用该方法时,编译器无法解析该方法。因此,请帮助我,告诉我如何重写UserLocalServiceImpl,以便我可以在其中定义新方法。Thanx提前..

你可以这样做

UserLocalServiceUtil.getService()

然后将结果强制转换为自定义包装器类型。然后您应该能够调用新方法。

这不起作用。您将更改Liferay已发布API的接口,并且基本上与采用Liferay API的任何其他插件都不兼容

虽然从技术上讲,您可以访问Liferay的所有源代码,并可以构建Liferay的修改版本,引入此更改,但这意味着任何市场插件(使用
UserLocalService
)都无法与您的自定义版本兼容。任何OSGi组件都可以挂接到Liferay并进入已发布API的调用堆栈,没有任何OSGi插件可以扩展已发布的接口,这样原始接口就比Liferay发布的API拥有更多的方法

如果依赖一个单独的函数调用,那么您可以做的最好的事情是:创建自定义服务,调用
UserLocalService


此外,在Liferay 7中,您不应该再使用
UserLocalServiceUtil
,而应该通过
@Reference
注释正确注入服务依赖项。*LocalServiceUtil类纯粹是为了向后兼容,只能从*.WAR风格的插件中使用。

请用您尝试过的和失败的代码片段更新帖子好吗?@Abishek这是一个测试吗?你问如何覆盖。。。一次又一次,没有回应你之前问题的任何评论或回答。此外,请阅读。关于你的许多其他问题:请不要交叉张贴或——至少——链接你的交叉张贴:@Olaf:如果你知道答案,请发表评论。@AbhishekJain这是我的评论。我知道答案。但我只会在这里发布它,如果你正确地遵循你所有的交叉张贴程序,因为你没有这样做,尽管被告知这么多次。这也适用于未来的帖子:停止浪费每个人的时间,停止在互联网上交叉发帖。这是对那些自愿提供免费帮助的人的不尊重。如果有紧急情况需要立即处理,请准备支付服务费用。我按照您所说的做了,令人惊讶的是,编译器能够解决服务包装器中声明的新方法。但是,portlet的状态变为“已安装”,而不是“活动”,并从示例类别中消失。请提前帮助..thanx..我假设您的服务包装器与使用它的代码位于不同的模块中。通过引入cast,您使客户机模块依赖于包装器模块。编译时,只要在类路径上有两个错误,就不会看到任何错误。然而,在运行时,您需要告诉OSGi这个依赖关系。那就是你的包装器模块应该导出相关的包,你的客户端模块应该导入它。我听说过导入,我在一个模块中做过。但是你能解释一下如何从模块导出包吗?这在很大程度上取决于你使用的构建工具。如果它接受bnd文件,则只需将其添加到导出包头(请参阅)。如果将Eclipse与BndTools一起使用,只需在UI中拖放即可。如果你使用maven bundle插件,它会在POM中运行。