鉴于我有一个代表我的RESET服务的接口
public interface BookResource {
@GET
@Path("/book/isbn/{isbn}/")
@Produces(value = { MediaType.APPLICATION_XML })
public ClientResponse<Book> getBookByIsbn(@PathParam("isbn") String isbn, @QueryParam("releaseStatus") String releaseStatus);
}
Run Code Online (Sandbox Code Playgroud)
如果我需要在我的webapp中使用Jersey作为JAX-RS提供者/ REST框架,如何为实际服务实现创建代理.
这很容易使用RESTEasy/Spring集成,这意味着我可以直接使用我的JAX-RS接口,而无需将其包裹在正确的锅炉板上进行调用.
基本上我正在寻找相当于以下的泽西岛: -
<bean id="bookResource" class="org.jboss.resteasy.client.spring.RestClientProxyFactoryBean">
<property name="serviceInterface" value="my.company.book.service.BookResource" />
<property name="baseUri" value="http://localhost:8181/books-service/" />
</bean>
Run Code Online (Sandbox Code Playgroud)
我刚刚花了最后一小时谷歌搜索这个并继续回到泽西岛的标准客户端API,这似乎需要大量的锅炉板来实现相同的目标.谁能指出我正确的方向?
我有一个奇怪的错误,并想知道是否有其他人可以想到一个原因.
情景: -
这种情况发生在Firefox和Chrome中,我还没有尝试过Internet Exploder.
我只在我的机器上再次发布了这个问题,而在与测试人员的Skype通话中,他们每次都可以重现它.它们基于印度,并且与我们的测试站点的连接速度要慢得多.这可能是一个原因吗?
我看到了一个相关的问题,但这是由Squid代理引起的,我不是代理的背后(虽然测试人员可能是).
我不喜欢添加缓存控制头,因为浏览器不应该根据HTTP规范缓存403,但我需要保证,当用户登录时,他们会获得正确的内容.
任何关于可能是什么原因的想法将不胜感激.在此期间,我将向转向页面添加一些缓存控制标头,以查看是否有帮助.
firefox google-chrome http browser-cache http-status-code-403
问题
我们正在使用RESTful方法构建SOA.一旦系统投入生产,我们将有许多客户使用该接口,包括内部和第三方系统.
我们希望能够在客户端应用程序提供的响应信息中使用和回显,例如: -
潜在解决方案
因此,坚持使用RESTful约束表明我们需要利用HTTP来实现这一点,并且我们可以实现几个选项.
答案
这有先例吗?我们生气了吗?在我的所有研究中是否有一些明显的东西?没有人真正关心他们部署后如何支持他们的服务?我应该闭嘴并离开吗?
我希望有人可以提供帮助.
PS抱歉,如果这是一篇文章,建议确实说"具体"....
我试图想出一种方法来使用HTTP响应消息来公开Web服务(REST和SOAP接口)的特定构建号.
为了清楚起见我并不是想控制客户端使用哪个版本的应用程序,因为这是由流量管理器和服务注册表处理的(也已经讨论过很多),我只想稍后调试什么版本已经使用或正在使用,例如,检查流量管理器是否正在提供正确的版本.
我花了很长时间查看HTTP规范,无法决定使用之间 Pragma
Pragma: application-version=1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)
使用额外的Server标题
Server: Apache-Coyote/1.1
Server: MyService-1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)
用一个 Via
Via: MyService-1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)
或客户头
X-ApplicationVersion: 1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)
在我看来,使用a Via或a Server在语义上是不正确的,但是使用X-标题会冒被代理删除但是Pragma不受约束的风险,因此如果想以编程方式使用它则更难解析.
我也有一种感觉,多个Server标题不会被尊重,但是没有办法用我正在使用的容器(JBoss)指定多个值.
这有先例吗?
有人有任何提示吗?
我应该闭嘴并使用一个吗?
我有一个类似这样的列表,List<Either<Failure, List<MyResult>>>并想将其展平为Either<Failure, List<MyResult>>使用 Arrow-kt,但我尝试过的所有内容似乎都很笨重,最终遍历列表两次。感觉应该有更好的方法,但我想不通。这是我现在拥有的一个人为的例子:
val things : List<MyThing> = /* some stuff */
val results : List<Either<Failure, List<MyResult>>> = things.map { doThingThatReturnsEither(it) }
val successes : List<MyResult> = results.mapNotNull { it.orNull() }.flatten()
val firstFailure : Failure? = results.mapNotNull { it.swap().orNull() }.firstOrNull()
return firstFailure?.let {it.left()} ?: success.right()
Run Code Online (Sandbox Code Playgroud)
欢迎任何建议!
额外问题:things.map { }如果其中一个返回 ,是否有捷径Left?