Liferay Json Web服务参数输入

时间:2018-07-25 15:53:22

标签: java liferay liferay-6

我使用Liferay 6.2 我使用Service Builder创建一个实体(notizia)。

我生成了Web服务。 我有一种打印这样的字符串的方法:

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

我不知道我想念什么。 我该怎么解决?

3 个答案:

答案 0 :(得分:1)

向XxxServiceImpl类添加新方法时,始终必须重建服务。

ServiceBuilder将正确的内容注入父类等,以确保该方法已注册并可用于远程API调用。

答案 1 :(得分:1)

这在某种程度上与Java版本有关。尝试使用Java8构建和部署服务。经过2天的研究,它对我有用。

我认为的问题是 Liferay正在使用jodd.asm5(检查您的异常跟踪的第一行),我检查了Jodd站点https://jodd.org/download/,在Java 8之后他们不支持它。不确定Liferay如何使用它。

答案 2 :(得分:1)

感谢您的回答@Dhruv Pandey!您保存了我的一天(或几天)。

顺便说一句,我想指出的是,即使在您发布的Jodd链接中,他们也会说:“ Jodd可以在存在合适的Java 8运行时环境的任何平台上使用。” 这并不意味着我们不能在运行于Java 11的服务器上使用它。

这里重要的是,我们部署的工件将目标运行时环境设置为Java 8,否则我们将获得异常。

因此,我正在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>

这引发了错误。我所做的就是将配置更改为以下内容:

<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>

此后,错误消失了。