Java Liferay Json Web服务参数输入
I用户Liferay 6.2 我使用ServiceBuilder创建了一个实体(notizia) 我生成了Web服务。 我有一种打印字符串的方法,如下所示:Java Liferay Json Web服务参数输入,java,liferay,liferay-6,Java,Liferay,Liferay 6,I用户Liferay 6.2 我使用ServiceBuilder创建了一个实体(notizia) 我生成了Web服务。 我有一种打印字符串的方法,如下所示: public class notiziaServiceImpl extends notiziaServiceBaseImpl { @Override @AccessControlled(guestAccessEnabled=true) public String printMyString() {
public class notiziaServiceImpl extends notiziaServiceBaseImpl {
@Override
@AccessControlled(guestAccessEnabled=true)
public String printMyString()
{
return "i'm the string ";
}
}
它起作用了!
我添加了另一个带有输入参数的方法
@AccessControlled(guestAccessEnabled=true)
public String getHelloWorld(String worldName)
throws com.liferay.portal.kernel.exception.PortalException,
com.liferay.portal.kernel.exception.SystemException {
return "Hello world: " + worldName;
}
“getHelloWorld”方法不起作用。
我在控制台中遇到了以下错误:
[MethodParametersResolverImpl:59] java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
我不知道我错过了什么。
如何解决此问题?当您向XxxServiceImpl类添加新方法时,您始终必须重建服务
ServiceBuilder将正确的内容注入父类等,以确保该方法已注册并可用于远程API调用。这与Java版本有关。尝试使用Java8构建和部署您的服务。经过两天的研究,它对我起了作用 我认为问题在于
Liferay正在使用jodd.asm5(检查异常跟踪的第一行),我检查了jodd站点,他们在Java8之后不支持它。不知道Liferay是怎么用的。谢谢你的回答@Dhruv Pandey!你救了我一天(或几天) 顺便说一句,我想指出,即使在你发布的Jodd链接中,他们说:“Jodd可以在任何有合适的Java8运行时环境的平台上使用。”这并不意味着我们不能在运行Java11的服务器上使用它 这里重要的是,我们部署的工件将目标运行时环境设置为Java8,否则我们将得到异常 因此,我正在Java 11中运行Liferay 7.2实例,并在我的服务pom.xml的构建插件中进行了以下配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>11</target>
</configuration>
</plugin>
...
</plugins>
<build>
org.apache.maven.plugins
maven编译器插件
3.8.1
1.8
11
...
这是抛出错误。我所做的是将配置更改为以下内容:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
...
</plugins>
<build>
org.apache.maven.plugins
maven编译器插件
3.8.1
1.8
1.8
...
之后,错误就消失了。如何调用该方法?您是否在(内存中)
localhost:8080/API/jsonws
尝试了API浏览器?如果粘贴整个类源,效果会更好。我要粘贴哪个类源?是的,我总是重建服务,但我总是会遇到此错误