我正在尝试从 aws s3 存储桶中读取文件并将其设置为我的 spring 批处理读取器类中的资源。当我在 aws lambda 函数上测试应用程序时,出现以下错误。任何建议专家?
Caused by: java.lang.IllegalStateException: InputStream has already been read - do not use InputStreamResource if a stream needs to be read multiple times
at org.springframework.core.io.InputStreamResource.getInputStream(InputStreamResource.java:97) ~[task/:na]
at org.springframework.batch.item.file.DefaultBufferedReaderFactory.create(DefaultBufferedReaderFactory.java:34) ~[task/:na]
at org.springframework.batch.item.file.FlatFileItemReader.doOpen(FlatFileItemReader.java:266) ~[task/:na]
at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:146) ~[task/:na]
Class to read from s3 bucket
@Service
public class S3BucketProcessing {
private static final AmazonS3 s3 = AmazonS3ClientBuilder.standard().build();
public InputStreamResource readFile() throws IOException{
String bucketName = "mybuckey";
String key = "File.txt";
S3Object object = s3.getObject(new GetObjectRequest(bucketName, key)); …Run Code Online (Sandbox Code Playgroud) 我收到sonarQube错误的下线,任何建议专家如何解决这个问题?提前致谢
protected static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
"account","emailAdress","mobilePhoneNumber","emailStatus"};
Run Code Online (Sandbox Code Playgroud) 我在我的项目上使用springBootVersion ='2.0.1.RELEASE'。我正在尝试为我编写的RestClientCertTestConfiguration类编写相互身份验证代码,如下所示。我在requestFactory上遇到错误。RestTemplateBuilder类型的方法requestFactory(Class)不适用于参数(HttpComponentsClientHttpRequestFactory)关于如何解决此问题的任何建议?谢谢
@Configuration
public class RestClientCertTestConfiguration {
private String allPassword = "mypassword";
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) throws Exception {
SSLContext sslContext = SSLContextBuilder
.create()
.loadKeyMaterial(ResourceUtils.getFile("classpath:myCerts.jks"), allPassword.toCharArray(), allPassword.toCharArray())
.loadTrustMaterial(ResourceUtils.getFile("classpath:myCerts.jks"), allPassword.toCharArray())
.build();
HttpClient client = HttpClients.custom()
.setSSLContext(sslContext)
.build();
return builder
//error on this line
.requestFactory(new HttpComponentsClientHttpRequestFactory(client))
.build();
}
}
Run Code Online (Sandbox Code Playgroud) 我在我的代码中使用try-with-resource块,想知道是否需要在方法结束时关闭资源或不需要?
try (S3Object object = s3.getObject(new GetObjectRequest(bucketName, key));
BufferedReader br = new BufferedReader(new InputStreamReader(object.getObjectContent()));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("output.txt")))){
String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
}
Run Code Online (Sandbox Code Playgroud) java ×4
spring-boot ×2
arrays ×1
aws-lambda ×1
collections ×1
rest ×1
sonarqube ×1
spring-batch ×1