小编Vic*_*tor的帖子

Wiremock - 有时它会抛出“软件导致连接中止:接收失败”

在使用 Spring 和 Wiremock 进行集成测试时,我遇到了一种非常奇怪的情况:突然,一个特定的测试开始间歇性失败。下面是错误的片段:

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:10314/my/endpoint": Software caused connection abort: recv failed; nested exception is java.net.SocketException: Software caused connection abort: recv failed
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:785) ~[spring-web-5.3.7.jar:5.3.7]
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711) ~[spring-web-5.3.7.jar:5.3.7]
    at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:468) ~[spring-web-5.3.7.jar:5.3.7]
... more logs here ...
Run Code Online (Sandbox Code Playgroud)

上下文如下:我添加了一个使用wiremock 来存根响应的新测试:

wireMockServer.stubFor(WireMock.post("/my/endpoint")
    .withRequestBody(containing(aJsonRequestBodyHere))
    .willReturn(aResponse()
            .withBody(aJsonResponseHere)
            .withStatus(HttpStatus.OK.value())
            .withHeader(HttpHeader.CONTENT_TYPE.toString(), CONTENT_TYPE_APPLICATION_JSON)));
Run Code Online (Sandbox Code Playgroud)

对此存根端点的调用如下:

given()
    .when()
    .get("my/endpoint")
    .then()
    .body(containsString(theExpectedJsonResponse)))
    .statusCode(200);
Run Code Online (Sandbox Code Playgroud)

奇怪的部分

  • 相同的测试在我的本地计算机上运行没有任何问题 - 如果单独运行
  • 当在我的机器上运行所有测试时,有时相同的测试会失败,有时则不会
  • 只有这个测试每次都失败;没有其他测试失败
  • 当测试在 Jenkins 上运行时,它 100% 失败

spring integration-testing wiremock

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

@EnableWebSocket 和 @EnableWebSocketMessageBroker 有什么区别

我想在 Spring 应用程序中启用套接字,并且在文档中提出了两种使用它们的方法,普通的和启用 STOMP 的。

我知道后者是由消息代理备份的,但没有找到对此功能的任何很好的解释。

所以,我的问题@EnableWebSocketMessageBroker是,与@EnableWebSocket?

websocket spring-boot

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

配置sails.js不缓存响应

我使用sails.js作为框架在node.js上有一个应用程序.为了向用户显示信息,我实现了一些.ejs文件.
当使用应用程序菜单中的链接导航时,我收到"304 - Nod Modified"响应.此外,在响应的标题内,我看到Etag,If-None-MatchExpires.
在阅读了一些帖子后,我在customMiddleware函数的/ config/express.js文件中添加了"app.disable('etag')"语句,并且不再发送etag和if-none-match. 无论如何,现在我在访问不同页面时看不到对服务器的任何请求(只是第一个请求)(甚至不是304响应). 如何告诉sails.js停止缓存我的页面?

caching node.js sails.js

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

未解决的要求:导入包:com.google.common.base

我正在尝试向 Liferay 添加外部库 - Orika 库。

我在 build.gradle 中添加了 Gradle 依赖项,如下所示:

compileInclude group: 'ma.glasnost.orika', name: 'orika-core', version: '1.5.4'
Run Code Online (Sandbox Code Playgroud)

我正在使用编译包含,以便模块也附加依赖项。

该库在本地运行良好- 我已经使用类中的 main 方法对其进行了测试,但是当我部署到 Portal 时,我收到以下错误:

org.osgi.framework.BundleException: Could not resolve module: <YourModuleName> [2755]_  Unresolved requirement: Import-Package: com.google.common.base_ [Sanitized]
Run Code Online (Sandbox Code Playgroud)

这似乎是由于运行时缺少库引起的,但不太清楚的是,如果我在其中运行它时它按public static main预期工作,为什么会在构建时添加这些依赖项?另外,我检查了 Eclipse 中下载的 libs Gradle,看看是否有任何包,com.google.commom.base但没有找到。

因此,因为构建时完成了其他一些步骤,所以我检查了生成的 jar 中的 MANIFEST.MF(例如 eclipse-workspace<your_project_name>\modules<your_module_name>\build\libs),然后com.google.commom.base从文件中删除该条目。错误消失了,但又出现了另一个错误:

org.osgi.framework.BundleException: Could not resolve module: <your_module_name> [2755]_  Unresolved requirement: Import-Package: com.sun.jdi_ [Sanitized]
Run Code Online (Sandbox Code Playgroud)

所以,问题是 -为什么添加这些依赖项以及如何删除或满足它们?- 鉴于我在 Eclipse 中没有它们,那么我会放弃它们。

java deployment orika liferay-7

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