小编j w*_*ill的帖子

如何使用 slf4j / log4j2 发送电子邮件通知?

我研究了其他类似的问题,并进行了一些谷歌搜索来找到我的答案,但我的问题仍然没有答案。我仍然不熟悉其中一些是如何工作的,所以请耐心等待。

我们的 maven pom.xml 使用 slf4j 依赖项:

pom.xml 使用maven导入slf4j

我们的 log4j2.xml 文件如下所示:

包含 smtp 附加程序的 log4j2.xml 文件

我只将其添加到上面的 log4j2.xml 文件中<SMTP name="Mail" ...> </SMTP>,并在我添加的文件的下方<logger name="com.path.class1" ...> <appender ...> </logger>

但由于某种原因,当我调用 log.error("error message") 时,我的电子邮件没有发送给我。我知道 smtp 主机可以工作,因为它用于 .NET 服务。smtp 服务器不需要任何凭据即可使用它。我知道我的 log.error 调用位于正确的目录和文件路径中。我尝试过设置端口,但这没有任何区别。我该如何让电子邮件通知发挥作用?

我什至尝试了 mailAppender,但这也不起作用:在此输入图像描述

java slf4j maven smtpappender log4j2

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

如何使用 JdbcTemplate 查询对象函数传递字符串数组查询字符串?

我想使用 jdbcTemplate 将字符串数组传递给存储过程,但在执行此操作时遇到问题。这是查询:

"SELECT * from stored_procedure(?::text[])"
Run Code Online (Sandbox Code Playgroud)

这就是我使用 jdbcTemplate 调用存储过程的方式(其中注释是列表):

jdbcTemplate.queryForObject(sql, Long.class, notes == null ? null : notes.toArray());
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

PreparedStatementCallback; bad SQL grammar [SELECT * from stored_procedure(?::text[])]; nested exception is org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of [Ljava.lang.Object;. Use setObject() with an explicit Types value to specify the type to use.
Run Code Online (Sandbox Code Playgroud)

我在网上没有找到任何可以解决此问题的内容。

java arrays spring parameter-passing jdbctemplate

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

什么是版本控制Json对象的最佳方法

我的任务是为非专业人士创建(各种)版本控制系统。数据存储为任意的json对象,但是用户界面不是那么低级。这是一个不错的漂亮的GUI。

每种类型的版本化数据都将具有一个主副本,并且当用户编辑主版本时,将为其自己的工作空间创建一个副本。准本地分支机构。

由于我们用户的性质,因此需要尽可能无缝地处理出现的任何冲突。它不会很复杂,不会将类似git冲突的结果发送给用户,并希望他们学会解决这些冲突。之所以会发生冲突,是因为每个人完成工作后都会将其提交审核,如果被接受,它将合并成一个类似大师的分支。

我的第一个想法是要有一个与每个对象相关联的更改的“元”列表,无论嵌套有多大,只要发生更改,就将更改操作添加到与该对象相关联的列表中。当用户进行工作空间更改时,查询将检查其他用户的更改是否会发生冲突,并且将向用户发送通知,让他们联系创建冲突另一部分的用户。

这是实用的方法吗?除了做一个大项目,还有其他明显的缺点吗?是否有更好的选择为非技术人员编写版本控制系统?

version-control json

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

React Typescript 类型转换问题 - 解析错误:缺少分号

我有这行简单的代码:

const target = e.target as HTMLLIElement;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

  Line 18:28:  Parsing error: Missing semicolon
> 18 |     const target = e.target as HTMLLIElement;
     |                            ^
Run Code Online (Sandbox Code Playgroud)

我查看了几十个与我的问题类似的不同帖子,但没有一个与我的问题完全匹配,或者他们的解决方案与我的项目并不真正相关。例如,有些人遇到了 eslint 问题,但我没有安装 eslint 包。这是我的package.json文件:

{
  "name": "ally-autobot",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@craco/craco": "^6.1.1",
    "@reduxjs/toolkit": "^1.5.1",
    "@tailwindcss/postcss7-compat": "^2.1.0",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "@types/jest": "^24.0.0",
    "@types/lodash": "^4.14.168",
    "@types/node": "^12.0.0",
    "@types/react": "^16.9.0",
    "@types/react-dom": "^16.9.0",
    "@types/react-redux": "^7.1.7",
    "@types/react-router-dom": "^5.1.7",
    "autoprefixer": "^9",
    "firebase": "^8.4.2",
    "firebase-tools": "^9.10.0",
    "lint": "^0.7.0",
    "lodash-core": "^4.17.19",
    "postcss": "^7",
    "react": …
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs eslint tsconfig

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

JavaFX如何让菜单栏只适合父宽度?

我正在使用Scene Builder来创建我的GUI,而我的菜单栏没有调整到父级.我怎么做到这一点?

当我尝试修改 - >适合父级时,菜单栏占据整个根窗格,显然这不是我想要的.这是我正在谈论的图像:

在此输入图像描述

如您所见,菜单栏未完全延伸到窗口的末尾.

java resize javafx menubar autoresize

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

如何将图像视图置于锚窗格中心?

我正在使用场景构建器来创建我的GUI,并且Image当用户选择列表中的项目时我显示s.的Images为不同的尺寸,并且当一个Image比它在窗格越小,图像被显示在窗格的左上方.如何获取ImageView和/或Image显示在Pane?的中心?

我看了整个JavaFX的imageview的并且图像API,但我还没有发现太多为中心的ImageView一个Pane.我也没有在场景构建器中看到任何东西.通常在场景构建器中,如果有一种方法可以使节点居中,则会有一个居中选项.

java user-interface javafx imageview scenebuilder

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

如何初始化自定义javafx控制器的成员变量?

在Spring框架中,我可以使用配置文件来加载类的成员变量.有没有办法在javafx中使用自定义控制器或自定义对象执行此操作?

java dependency-injection controller javafx fxml

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

Spring @Scheduled 任务运行两次

我正在创建一个@Scheduled每 5 秒运行一次的任务。正如其他问题中的问题一样,我的任务运行了两次!

我查看了其他问题,并在此处阅读了适用的文档,但我无法弄清楚问题所在。

我知道当我启动我的 tomcat 服务器时,我的类的两个单独实例@Scheduled正在被实例化。我还知道它们何时参考我的日志文件被实例化。

与此日志行相关的一个:

信息:初始化 Spring 根 WebApplicationContext

另一个带有此日志行:

信息:初始化 Spring FrameworkServlet 'servlet'

这是弹簧配置文件。

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns:security="http://www.springframework.org/schema/security"
   xmlns:task="http://www.springframework.org/schema/task"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">

<context:component-scan base-package="web.controllers"/>
<context:component-scan base-package="services"/>
<context:component-scan base-package="dao"/>
<context:component-scan base-package="scheduled"/>
<context:property-placeholder location="/WEB-INF/application.properties"/>

<mvc:annotation-driven/>
<mvc:default-servlet-handler/>

<task:annotation-driven />
Run Code Online (Sandbox Code Playgroud)

还有我的简单 java 类:

package scheduled;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

@Service
public class Notifier {

@Scheduled(fixedDelay = 5000)
public void notifyUsersOfBidItems() {
    try { …
Run Code Online (Sandbox Code Playgroud)

java spring tomcat spring-mvc scheduled-tasks

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

异步应用服务器与多个阻止服务器

tl; dr许多Rails应用程序或一个Vertx/Play!应用程序吗?

我一直在与我的团队的其他成员讨论使用异步应用服务器(例如Play)的优缺点!框架(基于Netty)与旋转Rails应用服务器的多个实例.

我知道Netty是异步/非阻塞的,这意味着在数据库查询,网络请求或类似的异步调用期间,事件循环线程将允许事件循环线程从被阻止的请求切换到另一个准备好处理/服务的请求.这将使CPU保持忙碌而不是阻塞和等待.

我赞成或使用像Play这样的东西!框架或Vertx.io,非阻塞的东西......可扩展.另一方面,我的团队成员说你可以通过使用Rails应用程序的多个实例获得相同的好处,这些应用程序开箱即用只带有一个线程并且没有真正的并发性,就像JVM上的应用程序一样.他们说只是使用足够的应用实例来匹配一个Play的性能!应用程序(或者我们使用的Play!应用程序),当Rails应用程序阻止操作系统将切换到不同的Rails应用程序.最后,他们说CPU将执行相同数量的工作,我们将获得相同的性能.

所以这是我的问题:

  • 上述论点中是否存在任何逻辑谬误?操作系统是否可以管理Rails应用程序实例以及Netty(它还可以在JVM上运行,它可以很好地将线程映射到内核)在其事件循环中管理请求?
  • 操作系统是否会像Netty或Vertx那样开启阻塞调用,甚至是基于Ruby自己的EventMachine构建的东西?
  • 有足够的Rails应用程序实例来匹配性能Play!应用程序,运行服务器会有成本明显的成本差异吗?如果没有成本差异,在我看来,使用什么方法并不重要.拍摄,如果它在财务上更便宜地运行一百万个Rails应用程序而不是一个Play!app我宁愿这样做.
  • 使用这些方法有哪些其他好处,我可能没有提出这个问题?

asynchronous ruby-on-rails netty playframework-2.0 vert.x

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

在 log4j2 中,我可以有多个同名的记录器吗?

在 log4j2 中,拥有多个同名的记录器是否合法?如果不是,我怎么能完成同样的事情?

<logger name="com.foo.bar" level="error" additivity="false">
    <appender-ref ref="SMTPAppender" /> 
    <appender-ref ref="stdout" />
</logger>
<logger name="com.foo.bar" level="INFO">
    <appender-ref ref="RollingFile"/>
</logger>
<root level="INFO">
    <appender-ref ref="stdout"/>
</root>
Run Code Online (Sandbox Code Playgroud)

java xml logging log4j2

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

Play 框架 - 表单不绑定到嵌套元组

我创建了一个表单来绑定到数据表请求:

val datatableForm = Form(
  tuple(
    "draw" -> number,
    "start" -> number,
    "length" -> number,
    "search" -> tuple(
        "value" -> text,
        "regex" -> boolean
    ),
    "columns" -> seq(tuple(
        "data" -> number,
        "name" -> text,
        "orderable" -> boolean,
        "search" -> tuple(
            "value" -> text,
            "regex" -> boolean
        )
      )
    ),
    "order" -> seq(tuple(
        "column" -> number,
        "dir" -> text
      )
    )
  )
)
Run Code Online (Sandbox Code Playgroud)

在我的请求中,我致电val form = datatableForm.bindFromRequest. draw这对于、start和变量非常有效,但对于、和变量length则失败。例如,当我不使用嵌套元组时,我可以调用它,它将返回一个对象,但是当我添加嵌套元组并调用时,它会返回一个对象。searchcolumnsorderdatatableForm.bindFromRequest.getSomeget …

javascript scala datatables playframework-2.0

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

Hibernate对象急切地加载了Lazy Collection

在此输入图像描述我有一个hibernate实体对象调用项目,它有两个集合,称为注释和消息,如下所示:

@Entity
@Table(name = "project")
public class Project {
    ...
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "project")
    private List<Note> notes;
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "project")
    private List<Message> messages;
    ...
}
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,在我的测试方法中获取项目,已经加载了注释和消息,我的测试验证了:

@Test
public void testLoadProjectNotes() {
    Project project = projectDao.getProjectById(41);
    assertNotNull(project.getNotes().get(0));
Run Code Online (Sandbox Code Playgroud)

}

我认为问题可能是我得到笔记并导致hibernate将它们加载到项目中.但是,在我执行该语句之前,调试器会在我获得注释之前显示项目中的注释.

以下是通过id获取项目的方法:

public Project getProjectById(long id) {
    Criteria criteria = new SmartCriteria(getSession().createCriteria(Project.class));
    criteria.add(Restrictions.eq("id", id));
    return (Project) criteria.uniqueResult();
}
Run Code Online (Sandbox Code Playgroud)

所以在通过其id获取项目的方法中没有任何地方我得到了注释和消息的结果.

如何确保懒惰地加载我想要懒惰加载的集合?

java collections spring hibernate lazy-loading

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