gpt4 book ai didi

java - Jolie 和 Spring Boot 注释 - 如何做到?

转载 作者:行者123 更新时间:2023-11-30 01:49:33 24 4
gpt4 key购买 nike

我目前正在努力在 Spring Boot 中创建基本的 Jolie 支持。 Jolie 是一种微服务语言,其底层基于 Java,但语法非常不同( example )。感谢JavaService通过 Jolie 附带的 class,可以从 Java 及其库中获取类/方法功能,并将它们嵌入到 Jolie 中。我想知道如何通过它们实现的注释和功能实现同样的效果。用JavaService也可以做到吗?或者我必须为 Jolie 编写自己的注释解析?

我想要实现的一个简单的行为示例是 @SpringBootApplication ,它运行一个“Hello world”@RestController,例如 here (第 2.3 和 2.4 点)。理想情况下,Jolie 中的类似程序应如下所示:

interface SpringAppInterface {
OneWay:
run(string)
}

outputPort SpringApplication {
Interfaces: SpringAppInterface
}

embedded {
Java:
"joliex.spring-boot.SpringApplicationService" in SpringApplication
}

@SpringBootApplication
main {
run@SpringApplication(args)
}

其中 SpringApplicationService 扩展了 JavaService 类并嵌入在 Jolie 中。现在是@RestController:

inputPort SpringTestService {
...
}

@RestController
main {
@RequestMapping("/hello")
hello(void)(response) {
response = "hello world"
}
}

这是一种理想的方式,它很好地呈现了我想要实现的行为。并更好地展示JavaService类的真实使用-here是标准 Java Math 类的实现,并且 here - 它嵌入到朱莉身上。

旁注:我想知道是否可以在 JavaService 端运行整个 Spring Boot 逻辑,例如,我有一个已经用 @SpringBootApplication 注释的 JavaService、一个用 @RestController 注释的 JavaService 等。

<小时/>

编辑:
正如我所说 - 我想在 Spring Boot 中创建 Jolie 支持,因此最终 Jolie 开发人员将能够包含“spring-boot.iol”等内容,并能够创建基于 Spring Boot 的 Jolie 程序。我想“spring-boot.iol”将类似于所有现有的包含文件,如“console.iol”、“math.iol”等,并且它将嵌入一个JavaService - 让我们称之为“SpringBootService”。现在,这个 SpringBootService 将从 Spring Boot 库中获取功能,以允许 Jolie 使用它们。这样,通过包含一些 *.iol 文件,Jolie 程序确实可以实现 Spring Boot 功能并运行 Spring Boot 应用程序。 enter image description here这当然只是我的想法 - 我认为这个任务可能是如何完成的,但话又说回来 - 存在 Spring Boot 注释的问题。

最佳答案

您必须在 Spring Boot 应用程序内部从 Java 运行 Jolie 解释器。例如,参见 http://fmontesi.github.io/2015/01/30/running-jolie-inside-of-java.html

在 Jolie 服务中声明本地内存输入端口:https://jolielang.gitbook.io/docs/locations/local

然后,您可以通过调用interpreter.commCore().getLocalCommChannel()来访问本地输入端口上公开的操作,这将返回一个可用于发送和接收的通信 channel 对象向 Jolie 翻译发送消息。

这是一个快速而肮脏的示例(您可能希望更好地处理 future 和异常),我在其中发送包含整数“x”的值:

Value v = Value.create();
v.setFirstChild( "x", 5 );
CommMessage request = CommMessage.createRequest( "yourOperationName", "/", v );
LocalCommChannel c = interpreter.commCore().getLocalCommChannel();
try {
c.send( request );
CommMessage response = c.recvResponseFor( request ).get();
if ( response.isFault() ) {
throw response.fault();
}
return response.value();
} catch( ExecutionException | InterruptedException | IOException e ) {
throw new FaultException( Constants.IO_EXCEPTION_FAULT_NAME, e );
}

实际上,除了 Jolie 的解释器和 Java 服务内部之外,该 API 仍然没有被广泛使用,因此欢迎提出使其变得更加友好的评论。

PS:您这样做的动机是什么?如果您的目标是使用 Jolie 制作微服务,那么添加所需的功能作为 Jolie 库,而不是“将 Jolie 添加到 Spring Boot”不是更容易吗?

关于java - Jolie 和 Spring Boot 注释 - 如何做到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56549113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com