-2
これは私が開発したファイルですが、上記の投稿をまだ実装できません。私が間違っているところに私に助言してください。私のコードはpostmanとspringboot tomcatでうまく動作しますが、/ messages urlへの投稿を自動化したいと思います。次のspringbootアプリケーションでhttp:// localhost:8080/markable/messagesに3秒ごとに投稿要求を行いたい
MessageController.java
import java.util.HashSet;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import service.MessageService;
import model.Message;
@RestController
@RequestMapping("/markable")
public class MessageController {
@Autowired
MessageService ms;
@RequestMapping(value="/messages", method=RequestMethod.POST)
public HttpStatus takeInput(@RequestBody Message input) {
boolean flag=ms.addMissionId(input.getMissionId());
System.out.println(flag);
if(flag)
return HttpStatus.CREATED;
else
return HttpStatus.CONFLICT;
}
@RequestMapping("/messages/all")
public HashSet<Integer> getAll() {
return ms.getAll();
}
@RequestMapping("/messages/{id}")
public int getMissionId(@PathVariable("id") String id)
{
int inputId = Integer.parseInt(id);
return ms.getMissionId(inputId);
}
}
FixedMessagePoster.java
package poster;
import model.Message;
import org.apache.commons.logging.Log;
import org.springframework.context.annotation.PropertySource;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
@Component
public class FixedRateMessagePoster {
Message m;
int count=0;
@Scheduled(fixedRate=3000)
public void doPost()
{
try {
m=new Message();
m.setMissionId(count);
count++;
int seed = 1000+(int)(Math.random()*(20000-1000) +1);
m.setSeed(seed);
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
String uri = new String("http://localhost:8080/markable/messages");
restTemplate.postForLocation(uri,m);
System.out.println("hello");
} catch (HttpClientErrorException e) {
e.printStackTrace();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
MessageService.java
package service;
import java.util.HashSet;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import model.Message;
import controller.MessageController;
@Service
public class MessageService {
static HashSet<Integer> missionIds = new HashSet<Integer>();
public HashSet<Integer> getAll(){
return missionIds;
}
public boolean addMissionId(int missionId) {
return missionIds.add(missionId);
}
public int getMissionId(int id){
if(missionIds.contains(id))
return id;
else
return -1;
}
}
のpom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Markable</name>
<description>Spring Boot Application for Markable</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.spring.framework</groupId>
<artifactId>gs-scheduling-tasks</artifactId>
<version>0.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
ようこそスタックオーバーフロー。残念ながら、あなたのコードは1つの大きなブロックにあるので、読みにくいです。あなたの質問を再フォーマットして分割することができますか?また、私はそこにあなたのメインクラスを見ませんでした。 [最小、完全な例](http://stackoverflow.com/help/mcve)を共有すると、何が起こっているのかを簡単に見ることができます。 –
私の考えは、n秒ごとに投稿リクエストで/ messagesのURLを打つことです... –