簡體   English   中英

Liferay Json Web 服務參數輸入

[英]Liferay Json Web Service Parameters input

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

我不知道我想念什么。 我該如何解決?

當您向 XxxServiceImpl 類添加新方法時,您總是需要重新構建服務。

ServiceBuilder 將正確的內容注入父類等,以確保該方法已注冊並可用於遠程 API 調用。

這在某種程度上與 Java 版本有關。 嘗試使用 Java8 來構建和部署您的服務。 經過2天的研究,它對我有用。

我認為問題是Liferay 正在使用 jodd.asm5(檢查異常跟蹤的第一行),我檢查了 Jodd 站點https://jodd.org/download/ ,他們在 Java 8 之后不支持它。不知道 Liferay 怎么樣使用那個。

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

在那之后,錯誤消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM