我在SO中有关于序列化和反序列化java.time.LocalDateTime以及JSON属性的解答已经阅读了几个问题,但我似乎无法使其正常工作.
我已经设法配置我的Spring Boot应用程序以我希望的格式返回日期(YYY-MM-dd HH:mm)但是我在接受JSON中的这种格式的值时遇到了问题.
这些是我到目前为止所做的所有事情:
添加了maven依赖关系jsr310:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
jsr310在我的主要课程中指定:
@EntityScan(basePackageClasses = { App.class, Jsr310JpaConverters.class })
Run Code Online (Sandbox Code Playgroud)
禁用序列化作为时间戳application.properties:
spring.jackson.serialization.write_dates_as_timestamps=false
Run Code Online (Sandbox Code Playgroud)
这是我的日期时间实体映射:
@Column(name = "start_date")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
@JsonFormat(pattern = "YYYY-MM-dd HH:mm")
private LocalDateTime startDate;
Run Code Online (Sandbox Code Playgroud)
在我的数据库中,我将此日期存储为TIMESTAMP,格式如下:2016-12-01T23:00:00+00:00.
如果我通过我的控制器访问此实体,它将返回具有正确startDate格式的JSON.当我尝试发布它并反序列化时,使用YYYY-MM-dd HH:mm格式,我得到以下异常:
{
"timestamp": "2016-10-30T14:22:25.285+0000",
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.http.converter.HttpMessageNotReadableException",
"message": "Could not read document: Can not deserialize value of type java.time.LocalDateTime from String \"2017-01-01 20:00\": Text '2017-01-01 20:00' could not …Run Code Online (Sandbox Code Playgroud) 我正在拦截通过JBossESB发送的消息.我正在使用管道拦截器这样做.
问题是,尽管发送者是服务(例如PortReference <logical:BlueServiceESB#BlueListener>),但接收者的名称是队列(不是服务).这是合乎逻辑的,因为在某些情况下,多个服务可以从给定队列接收消息,但通常,每个队列仅映射到一个服务.
我想知道哪个队列映射到哪个服务,所以我可以显示/保存这些信息,并显示如消息:service ---> service(not service ---> queue).
我知道我可以使用注册表获取映射到服务的队列名称,如下所示:
System.setProperty("javax.xml.registry.ConnectionFactoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl");
// Retrieving information from the ESB Registry
Registry reg = RegistryFactory.getRegistry();
System.out.println(reg.findAllServices());
List<EPR> eprs = reg.findEPRs("FirstServiceESB", "SimpleListener");
System.out.println(eprs);
Run Code Online (Sandbox Code Playgroud)
我想颠倒这种方法 - 队列是输入和服务(EPR =终点引用=服务)是输出.有什么方法可以做到这一点,或者我只是想在这里做不可能的事情.我没有找到关于这个主题的任何教程或问题.
谢谢你的任何提示!
我正在尝试配置Logback以在发生异常(日志级别:错误)时发送电子邮件.到目前为止我还没能使它工作,所以我想请求你的配置帮助.
我有一个Spring启动应用程序,其中进行了一些处理:
private void foo() {
try {
// do something
} catch (Exception e) {
log.error("Logging my exception");
}
}
Run Code Online (Sandbox Code Playgroud)
我想在记录此错误时触发电子邮件.我按照一些教程,将logback.xml和smtp-appender.xml添加到我的resources目录:
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<include resource="smtp-appender.xml" />
<logger name="com.mycompany" level="DEBUG">
<appender-ref ref="SMTP" />
</logger>
</configuration>
Run Code Online (Sandbox Code Playgroud)
SMTP-appender.xml
<?xml version="1.0" encoding="UTF-8"?>
<included>
<appender name="SMTP" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>xxx</smtpHost>
<username>user</username>
<password>password</password>
<to>test@email.com</to>
<from>me@email.com</from>
<subject>testError</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout" />
</appender>
</included>
Run Code Online (Sandbox Code Playgroud)
我在localhost上设置了本地smtpserver sendmail.我也尝试过使用AWS smtp服务器和Gmail.到目前为止,这些服务对我来说都不起作用.
问题是我在异常后没有收到任何电子邮件,并且字面上没有对应于logback的log.error()输出(当然除了输出)这让我觉得应用程序甚至不知道这些配置文件...
这些是我在pom.xml中的 maven依赖项:
<parent>
<groupId>org.springframework.boot</groupId> …Run Code Online (Sandbox Code Playgroud) 我有一个在Spring-boot应用程序中编写的简单REST控制器,但我不确定如何实现内容协商以使其根据请求标头中的Content-Type参数返回JSON或XML.有人可以向我解释一下,我做错了什么?
控制器方法:
@RequestMapping(value = "/message", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public Message getMessageXML(@RequestParam("text") String text) throws Exception {
Message message = new Message();
message.setDate(new Date());
message.setName("Test");
message.setAge(99);
message.setMessage(text);
return message;
}
Run Code Online (Sandbox Code Playgroud)
调用此方法时,我总是得到JSON(即使我指定了Content-Type要application/xml或者text/xml).
当我实现两个方法,每个方法具有不同的映射和不同的内容类型时,我能够从xml获取XML,但如果我在单个方法中指定两个mediaTypes(如提供的示例),则它不起作用.
我想要的是调用\message端点并接收
任何帮助表示赞赏.
编辑:我更新了我的控制器以接受所有媒体类型
@RequestMapping(value = "/message", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE }, consumes = MediaType.ALL_VALUE)
public Message getMessageXML(@RequestParam("text") String text) throws Exception {
Message message = new Message();
message.setDate(new Date()); …Run Code Online (Sandbox Code Playgroud) 我试图使用OpenCV库比较两个图像(确定它们是否相似).我配置了java包装器并找到了几个我正在尝试重写为Java的教程(主要是在C/C++中).我正在使用特征检测方法.
问题是我目前拥有的算法没有产生任何合理的结果(它声称两个相似的图像没有任何共同点,并且发现完全不同的其他两个图像之间的匹配).有人建议我应该如何使用openCV匹配器产生一些合理的结果?
这是我的图像比较代码
private static void compareImages(String path1, String path2) {
System.out.println(path1 + "-" + path2);
FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB);
DescriptorExtractor descriptor = DescriptorExtractor.create(DescriptorExtractor.ORB);
DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING);
// first image
Mat img1 = Imgcodecs.imread(path1, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat descriptors1 = new Mat();
MatOfKeyPoint keypoints1 = new MatOfKeyPoint();
detector.detect(img1, keypoints1);
descriptor.compute(img1, keypoints1, descriptors1);
// second image
Mat img2 = Imgcodecs.imread(path2, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat descriptors2 = new Mat();
MatOfKeyPoint keypoints2 = new MatOfKeyPoint();
detector.detect(img2, keypoints2);
descriptor.compute(img2, keypoints2, descriptors2);
// match these two keypoints sets …Run Code Online (Sandbox Code Playgroud) 我有一个简单的REST服务,可以使用Spring启动访问数据CrudRepository.
这个存储库已经实现了这样的分页和排序功能:
public interface FlightRepository extends CrudRepository<Flight, Long> {
List<Flight> findAll(Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)
打电话给:
Sort sort = new Sort(direction, ordering);
PageRequest page = new PageRequest(xoffset, xbase, sort);
return flightRepo.findAll(page);
Run Code Online (Sandbox Code Playgroud)
我想添加过滤到这个存储库(例如只返回实体id > 13 AND id < 27).CrudRepository似乎不支持此功能.有没有办法如何实现这一点,还是我需要使用不同的方法?
谢谢你的任何提示!
我正在尝试实现一个非常简单的程序来查找两个图像之间的相似性.
我正在使用ORB功能检测器和图像描述符执行此任务,我使用knnMatch识别匹配:
FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB);
DescriptorExtractor descriptor = DescriptorExtractor.create(DescriptorExtractor.ORB);
DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING);
// DETECTION
// first image
Mat img1 = Imgcodecs.imread(path1, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat descriptors1 = new Mat();
MatOfKeyPoint keypoints1 = new MatOfKeyPoint();
detector.detect(img1, keypoints1);
descriptor.compute(img1, keypoints1, descriptors1);
// second image
Mat img2 = Imgcodecs.imread(path2, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat descriptors2 = new Mat();
MatOfKeyPoint keypoints2 = new MatOfKeyPoint();
detector.detect(img2, keypoints2);
descriptor.compute(img2, keypoints2, descriptors2);
// MATCHING
// match these two keypoints sets
List<MatOfDMatch> matches = new ArrayList<MatOfDMatch>();
matcher.knnMatch(descriptors1, descriptors2, matches, …Run Code Online (Sandbox Code Playgroud) 我试图检查,如果我的数据库中已存在特定值.我使用JDBC从java独立应用程序访问数据库(查询将记录插入数据库工作,所以我的设置和连接都可以).
String queryCheck = "SELECT * from messages WHERE msgid = " + msgid;
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(queryCheck); // execute the query, and get a java resultset
// if this ID already exists, we quit
if(rs.absolute(1)) {
conn.close();
return;
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误(我的SQL语法显然有问题):
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'd-f05708071f8f' at line 1
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在MySQL命令行中执行此命令,它可以工作!你能告诉我,我的陈述有什么不对吗?谢谢你的任何提示!
我有一个shell脚本,应该从S3下载一些文件并安装一个ebs驱动器.但是,我总是以"无法找到凭据"结束.
我已使用aws configure命令指定了我的凭据,并且命令在shell脚本之外工作.有人可以告诉我(最好是详细的)如何使它工作?
这是我的剧本
#!/bin/bash
AWS_CONFIG_FILE="~/.aws/config"
echo $1
sudo mkfs -t ext4 $1
sudo mkdir /s3-backup-test
sudo chmod -R ugo+rw /s3-backup-test
sudo mount $1 /s3-backup-test
sudo aws s3 sync s3://backup-test-s3 /s3-backup/test
du -h /s3-backup-test
ipt (short version):
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我有一个项目,处理对象的一些ORM映射(有一些@OneToMany关系等).
我使用REST接口来处理这些对象,使用Spring JPA来管理它们.
这是我的一个POJO的示例:
@Entity
public class Flight {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
private String dateOfDeparture;
private double distance;
private double price;
private int seats;
@ManyToOne(fetch = FetchType.EAGER)
private Destination fromDestination;
@ManyToOne(fetch = FetchType.EAGER)
private Destination toDestination;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "flight")
private List<Reservation> reservations;
}
Run Code Online (Sandbox Code Playgroud)
在发出请求时,我必须在JSON中指定所有内容:
{
"id": 0,
"reservations": [
{}
],
"name": "string",
"dateOfDeparture": "string",
"distance": 0,
"price": 0,
"seats": 0,
"from": {
"id": 0,
"name": "string"
}, …Run Code Online (Sandbox Code Playgroud)