小编Jam*_*mes的帖子

有没有办法使用JAX-RS带注释的接口与Jersey作为客户端?

鉴于我有一个代表我的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,这似乎需要大量的锅炉板来实现相同的目标.谁能指出我正确的方向?

java rest jax-rs jersey resteasy

8
推荐指数
2
解决办法
7376
查看次数

Chrome和Firefox缓存403

我有一个奇怪的错误,并想知道是否有其他人可以想到一个原因.

情景: -

  • 用户尝试访问受限制的内容,获取具有403状态代码的转向页面
  • 用户登录
  • 用户尝试再次访问内容但应该被允许,浏览器返回缓存转向页面和403响应(没有在服务器上注册的命中).
  • CTRL + F5或等待一段时间,浏览器返回正确的内容.

这种情况发生在Firefox和Chrome中,我还没有尝试过Internet Exploder.

我只在我的机器上再次发布了这个问题,而在与测试人员的Skype通话中,他们每次都可以重现它.它们基于印度,并且与我们的测试站点的连接速度要慢得多.这可能是一个原因吗?

我看到了一个相关的问题,但这是由Squid代理引起的,我不是代理的背后(虽然测试人员可能是).

我不喜欢添加缓存控制头,因为浏览器不应该根据HTTP规范缓存403,但我需要保证,当用户登录时,他们会获得正确的内容.

任何关于可能是什么原因的想法将不胜感激.在此期间,我将向转向页面添加一些缓存控制标头,以查看是否有帮助.

firefox google-chrome http browser-cache http-status-code-403

7
推荐指数
0
解决办法
2468
查看次数

支持RESTful服务 - 我应该使用Pragma,Cookies,自定义标头或其他东西来识别客户端会话和事务吗?

问题

我们正在使用RESTful方法构建SOA.一旦系统投入生产,我们将有许多客户使用该接口,包括内部和第三方系统.

我们希望能够在客户端应用程序提供的响应信息中使用和回显,例如: -

  • 会话ID - 可以是Java EE会话ID或任何特定于客户端的,这对于支持团队和调试客户端问题以在我们的所有系统中跟踪它们非常有用.
  • 事务ID - 请求的唯一标识符,如果它们异步调用服务或者我们实现202 Accepted样式长时间运行的进程,我们可以回显给客户端以帮助客户端进行请求/响应关联.

潜在解决方案

因此,坚持使用RESTful约束表明我们需要利用HTTP来实现这一点,并且我们可以实现几个选项.

  • Pragma标题 - 为transaction-id,session-id等实现扩展-pragma.这似乎是解决方案的纯粹主义,因为它使用标准的HTTP标题,虽然我担心它会成为我们无法解决的一切问题的倾销场好好想想.
  • X-My-Header - 我们需要的每个字段的自定义标头.可能被代理剥离,而不是核心HTTP,所以感觉反休息
  • 在查询字符串或XML/JSON表示中 - 将字段添加到我们的所有资源.因为它是一个操作参数,所以感觉它应该作为元数据而不是资源提供.
  • Cookie - 使用Cookie和Set-Cookie来保存自定义键值; 在会话ID的情况下很有用,因为大多数实现已经使用了cookie.每次都必须重新发送以支持客户端关联哪种方式使用cookie失败.

答案

这有先例吗?我们生气了吗?在我的所有研究中是否有一些明显的东西?没有人真正关心他们部署后如何支持他们的服务?我应该闭嘴并离开吗?

我希望有人可以提供帮助.

PS抱歉,如果这是一篇文章,建议确实说"具体"....

rest soa

6
推荐指数
1
解决办法
557
查看次数

HTTP响应标头 - 应用程序版本

我试图想出一种方法来使用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)指定多个值.

这有先例吗?
有人有任何提示吗?
我应该闭嘴并使用一个吗?

rest soap web-services http

6
推荐指数
1
解决办法
2094
查看次数

如何在 Kotlin 中有效地展平任何一个列表

我有一个类似这样的列表,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

kotlin arrow-kt

1
推荐指数
1
解决办法
314
查看次数