【问题标题】:Liferay Json Web Service Parameters inputLiferay Json Web 服务参数输入
【发布时间】:2019-01-02 12:33:21
【问题描述】:

我使用 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

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

【问题讨论】:

  • 如何调用方法?您是否尝试过(从内存中)localhost:8080/api/jsonws 的 API 浏览器?
  • 如果你粘贴整个类的源代码会更好..
  • 我要粘贴哪个类源?

标签: java liferay liferay-6


【解决方案1】:

当您向 XxxServiceImpl 类添加新方法时,您总是需要重新构建服务。

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

【讨论】:

  • 是的,我总是重建服务,但我总是得到这个错误
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    感谢@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>
    

    之后,错误就消失了。

    【讨论】:

      猜你喜欢
      • 2022-07-12
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 2019-01-23
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多