小编pvp*_*ran的帖子

出现错误:...。嵌套异常是java.lang.NoSuchMethodError:org.apache.catalina.Context.addServletMapping(Ljava / lang / Stri

我正在尝试运行Spring-Boot应用程序,但是在将应用程序作为Java应用程序运行时却出现以下错误

org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is java.lang.NoSuchMethodError: org.apache.catalina.Context.addServletMapping(Ljava/lang/String;Ljava/lang/String;)V
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:137) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) ~[spring-context-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at main.java.start.WebApplication.main(WebApplication.java:21) [classes/:na]

Caused by: java.lang.NoSuchMethodError: org.apache.catalina.Context.addServletMapping(Ljava/lang/String;Ljava/lang/String;)V
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.addServletMapping(TomcatEmbeddedServletContainerFactory.java:290) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.addDefaultServlet(TomcatEmbeddedServletContainerFactory.java:270) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.prepareContext(TomcatEmbeddedServletContainerFactory.java:215) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:178) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:164) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:134) ~[spring-boot-1.5.10.RELEASE.jar:1.5.10.RELEASE]
... 8 common frames omitted
Run Code Online (Sandbox Code Playgroud)

我的POM文件如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>Web.Final.Project</groupId>
<artifactId>Web.Final.Project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>fitness365-group-project</name>
<description>Fitness 365 …
Run Code Online (Sandbox Code Playgroud)

java spring pom.xml maven spring-boot

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

在请求体上获取整数

需要获取要在数据库上删除的 id 但我无法通过这种方式获取 id 参数

@RequestMapping(value = {"/delete/search/","/delete/search"}, method = RequestMethod.DELETE)
    @ResponseBody
    public Integer deleteUser(@RequestBody Integer id_search) {
        return id_search;
    }
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息

"message": "JSON parse error: Can not deserialize instance of java.lang.Integer out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.Integer out of START_OBJECT token\n at [Source: java.io.PushbackInputStream@1b77938; line: 1, column
Run Code Online (Sandbox Code Playgroud)

java spring

5
推荐指数
2
解决办法
8983
查看次数

Spring Security中@PreAuthorize和@PostAuthorize有什么区别

在访问任何数据之前需要评估条件,两种不同授权方法的目的是什么?

spring spring-security spring-boot

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

Spring boot 嵌入式 MongoDb 数据预填充

我想知道是否有像Flyway这样的工具可以帮助mongodb进行数据库初始化/迁移。我的一些想法是

  1. 我已经将flappdoodle用作带有springboot的嵌入式mongo。这工作正常,但是,我需要手动将数据放入其中。
  2. 对于使用 mongo db 的 Junit 测试,我使用nosqlunit。这对 Fongo(Fake mongo)非常有效。它支持从 json 文件读取数据并在启动期间用数据预填充数据库。但这仅适用于 junit,因为这是一个 JUnit 扩展。

我正在寻找的是上述两者的混合,一个嵌入式 mongo,它不仅可以与 JUnit 一起使用,还可以从给定的 json 中预填充数据(类似于 Flyway 中的 V1__init.sql)
有没有这样的工具?

unit-testing mongodb spring-data-mongodb spring-boot fongo

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

弹出启动和mongo自定义查询与订单

我有一个自定义查询在org.springframework.data.mongodb.repository该变

@Query("{'additionalInfo.suspicious' : true}")
List<Trip> findSuspiciousTripsByFleetId(String fleetId, Pageable pageable);
Run Code Online (Sandbox Code Playgroud)

我如何通过(日期desc)向此添加订单?

OrderByDateDesc例如,它是否神奇地接受后缀?

提前致谢.

mongodb spring-data-mongodb spring-boot

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

没有响应类型的Spring Boot RestTemplate发布

我需要调用另一个api,并且尝试使用postForEntity,如下所示:

restTemplate.postForEntity(postUrl, request, responseType)
Run Code Online (Sandbox Code Playgroud)

现在,我正在调用的api返回的是特定类型的对象,比方说CustomerDto。但是我对此对象不感兴趣。我只想发布,不希望任何回报,所以我不想在应用程序中创建这个CustomerDto类。因此,对于这种情况,在上面的语句中,我应该用responseType代替什么。如果我想要返回的对象,在responseType的情况下,我会给出CustomerDto.class,但是我什么也不想得到,那么我该怎么办?

java post resttemplate spring-boot

3
推荐指数
2
解决办法
1945
查看次数

Mockito 测试预期异常

我正在尝试在 spring-boot 中测试我的服务层和存储库,为此,我使用 Mockito,作为测试的一部分,我验证任何登录请求,如果用户名或密码不正确,则会出现异常应该被扔掉。

我正在测试用户是否存在并且测试通过,但是,当用户名不存在时,我似乎无法让测试通过。这是我的 tets 代码

@Mock
UserRepository userRepository;

@InjectMocks
UserServiceImpl userServiceImpl;

Users mockUser = Mockito.mock(Users.class);

private String username = "real_user";

private String fakeUser = "fake_user";

@Before
public void setup() {
    mockUser.setUsername(username);
    mockUser.setPassword(new BCryptPasswordEncoder().encode("password"));
    mockUser.setEnabled(true);
}

/**
 * This Test Passes
 */
@Test
public void should_LoadUsersByUsername_IfUserExists() {
    Mockito.when(userRepository.findByUsername(username)).thenReturn(mockUser);
    userServiceImpl.loadUserByUsername(username);
    Mockito.verify(userRepository, Mockito.atLeastOnce()).findByUsername(username);
}

/**
 * This Test Fails
 */
@Test(expected = UsernameNotFoundException.class)
public void should_Throw_UserNameNotFoundException_If_UserIsNotFound() {
    Mockito
       .when(userRepository.findByUsername(fakeUser))
       .thenThrow(UsernameNotFoundException.class);
}
Run Code Online (Sandbox Code Playgroud)

这是我试图运行测试的代码

@Service
public class UserServiceImpl implements UserService {

@Autowired
UserRepository …
Run Code Online (Sandbox Code Playgroud)

java testing mocking mockito spring-boot

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

Java 10本地变量类型推理优势?

我试图理解Java 10局部变量类型推断.我似乎明白它是什么,但我认为没有任何优势.所以我想知道引入这个功能背后的想法是什么.这些是我的一些观察.如果我错了,请纠正我.

  1. 例如,(与其他语言不同)我不能只声明这样的变量

    var abc;
    
    Run Code Online (Sandbox Code Playgroud)

    我需要初始化它(但不能初始化为null).所以我真的没有看到任何优势.

  2. 我看到的其他一个参数是先前我们必须使用其显式类型声明这样的变量.

    Map<User, String> userChannels = new HashMap<>();
    
    Run Code Online (Sandbox Code Playgroud)

    现在我可以这样做

    var userChannels = new HashMap<User, String>();
    
    Run Code Online (Sandbox Code Playgroud)

使用现代IDE(如IntelliJ IDEA)及其对代码完成的支持.我想不出这会带来什么额外的好处(在上面的上下文中).

我读到的其他一些观点是

多态代码与var不一致.
而且我也不能将var用于非可表示类型,如Anonymous类.

鉴于所有这些,为什么有必要引入这个功能?有人可以澄清如果我在这里遗漏了什么.

java java-10

3
推荐指数
2
解决办法
312
查看次数

@Tailable(spring-data-reactive-mongodb) 相当于 spring-data-r2dbc

我正在尝试 spring-data-r2dbc。我正在 Postgresql 上尝试这个。我之前尝试过 spring-data-mongodb-reactive 。我忍不住将两者进行比较。

我发现查询派生尚不支持。但我想知道是否有等效的@Tailable. 这样我就能实时收到数据库更改的通知。任何人都可以分享与此相关的任何代码示例吗?

我知道底层数据库应该支持这一点。我相信 Postgresql 确实使用逻辑解码支持这种事情(如果我错了,请纠正我)。

@Tailablespring-data-r2dbc 中有等效的吗?

postgresql spring-data spring-boot spring-data-r2dbc

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

AWS Lambda 在没有并发的情况下从 SQS 读取

我的要求是这样的。

  1. 每 2 小时从 SQS 读取一次,获取所有可用消息,然后对其进行处理。
  2. 处理包括创建包含 SQS 消息详细信息的文件并将其发送到 sftp 服务器。

我实现了 AWS Lambda 来实现第 1 点。我有一个带有 sqs 触发器的 Lambda。我将批量大小设置为 50,然后将批量窗口设置为 2 小时。我的假设是 Lambda 每 2 小时触发一次,50 条消息将一次性传递到 lambda 函数,我将为每 50 条记录创建一个文件。

但我观察到,即使我将批量大小配置为 50,我的 lambda 函数也会被不同数量的消息触发(有时 50、有时 20、有时 5 等)。
阅读一些文档后,我知道(我不确定)有lambda 生成从 SQS 读取的 5 个长轮询连接,这导致 lambda 函数的这种行为被不同数量的消息触发。

我的问题是

  1. 我关于建立 5 个并行连接的假设正确吗?如果是的话,有什么办法可以控制它吗?我希望这发生在单线程/连接中
  2. 如果 1 不可能,我还有什么其他选择。我不想为每几条记录创建一个文件。我希望每两小时生成一个文件,其中包含 sqs 中的所有消息。

amazon-sqs amazon-web-services aws-lambda

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