gpt4 book ai didi

java - ReSTLet 修改入站对象并返回它还是返回新副本?

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:56 25 4
gpt4 key购买 nike

我正在尝试更多地了解来自soap-rpc背景的reSTLet。我似乎不知道该怎么做(也许不可能)的一件事是根据请求修改对象或发回经过修改的复制版本。

我正在尝试做这样的事情:

public interface AddressService {
@Get
Address addOnZipCode( Address address );
}

服务器将与实现一起部署,客户端可以利用动态代理来完成其工作。

服务器启动得很好,但是当客户端进行调用时,服务器上没有任何迹象表明正在调用实现方法。此外,在对服务器的调用返回之前,客户端不会出错 - 返回的对象为空?!?

我在这里尝试用 ReSTLet 可以实现什么吗?如果是这样,我对我可能做错了什么有什么想法吗?

如果需要,我可以发布更多代码。

提前致谢。

编辑#1:

我什至尝试简化它以不使用自定义对象:

@Post
String execute( String message );

我得到以下信息:

INFO: Starting the default HTTP client
Exception in thread "main" Method Not Allowed (405) - Method Not Allowed
at org.restlet.resource.ClientResource$1.invoke(ClientResource.java:1615)
at $Proxy5.execute(Unknown Source)

我开始认为这是不可能的,因此,我很难看出这是 SOAP+RPC Web 服务的可行替代方案。

编辑#2:根据书中的示例,这似乎是可能的:“ReSTLet in Action”

public interface AccountsResource {          
@Get("txt")
public String represent();

@Post("txt")
public String add(String account);
}

编辑#3:事实证明,仅仅点击 Eclipse 控制台中的“停止”按钮并不能关闭服务器实例。打开浏览器访问服务器 URL 显示了一些可疑的结果 - 有多个旧服务器实例正在运行。将它们全部关闭后,我让它开始工作。最终的答案是使用 @Post 而不是 @Get1

最佳答案

看看这个:

http://wiki.restlet.org/docs_2.0/13-restlet/21-restlet/318-restlet/303-restlet.html

在服务器端,您的实现必须如下所示:

class AddressServerResource extends ServerResource implements AddressService {
// implementation
}

在客户端:

ClientResource cr = new ClientResource("http://your-api.com/address/123");
AddressService service = cr.wrap(AddressService.class);
// use the service transparently

编辑:

@Post
Address addOnZipCode( Address address );

关于java - ReSTLet 修改入站对象并返回它还是返回新副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6132390/

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