Web Services 在Liferay 7.4中,一般实体类是否应置于服务或API模块下?

cvxl0en2  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(136)

我有一个通用的实体类ProductFilter,它包含了JSONWS POST端点的输入参数。在构建服务之后,我应该把这个类放在模块api或模块service下面吗?
首先我把它放在service下,然后在api中的接口抱怨找不到ProductFilter

C:\Users\Zirui\projects\nongzi\code\nongzi-gradle2\modules\db\db-api\src\main\java\com\toptoken\core\service\ProductService.java:26: error: package com.toptoken.core.domain.page does not exist
import com.toptoken.core.domain.page.ProductFilter;
                                    ^

然后我把它放在api下,但是service的部署抛出了一个异常,即service无法找到ProductFilter,尽管service依赖于api
2023-08-22 08:13:26.489错误[fileinstall-directory-watcher][DirectoryWatcher:1173]无法启动包:file:/C:/Users/Zirui/projects/web3/test/gradle-wsdd/softles/osgi/modules/com.toptoken.core.service-1.0.0.jar com.liferay.portal.kernel.log. LogSanitizer异常:org.osgi.framework.BundleException:无法解析模块:com.toptoken.core.service [1627]未解决的要求:Import-Package:com.toptoken.core.domain.page [Sanitized]
最后,我把ProductFilter放在apiservice下面,但是部署时出现了一个错误:
java.lang.LinkageError:加载程序约束冲突:loader org.eclipse.osgi.internal.loader. EquinoxClassLoader@5c03e79e(org.eclipse.osgi.internal.loader.EquinoxClassLoader的示例,com.liferay.shielded.container.internal.ShieldedContainerClassLoader的子级(@3fc9dfc 5 com.liferay.shielded.container.internal.ShieldedContainerClassLoader)希望加载类com. toptoken. core. domain. page. ProductFilter。org.eclipse.osgi.internal.loader. EquinoxClassLoader@38c9a210以前加载了具有相同名称的不同类(org.eclipse.osgi.internal.loader.EquinoxClassLoader的示例,com.liferay.shielded.container.internal. ShieldedContainerClassLoader@3fc9dfc5 com.liferay.shielded.container.internal.ShieldedContainerClassLoader的子级)。
ProductFilter应该放在哪个模块下,api还是service

zysjyyx4

zysjyyx41#

作为POST端点的请求体,我必须使用HashMap<String, Object>。没有更多的通用实体类。

相关问题