[英]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.