小编rea*_*sim的帖子

Maven发布插件和Windows换行符

当我尝试运行maven-release-plugin时,它会更改pom.xml文件中的版本.在maven发布之前,每一行结尾都有unix样式,<lf>但在我的windows机器上运行之后,插件会将文件中的每一行都更改为<cr><lf>.

我的问题是:

a)有没有办法告诉maven将所有内容保留原样或使用特定的行结尾

要么

b)是否有通用的方法告诉窗口结束应该是什么?即使是在操作系统中深陷内容的工具也会被认为是有用的.

我看了这个https://issues.jfrog.org/jira/browse/BI-111,它说"已解决",但我使用的是最新版本,但它对我不起作用.

line-endings maven-release-plugin

20
推荐指数
1
解决办法
4819
查看次数

依赖于其他属性的Spring属性

我希望有一些属性,我可以在spring bean中通过@Value引用,只能依赖于其他属性来创建.特别是我有一个属性,它描述了目录的文件系统位置.

myDir=/path/to/mydir
Run Code Online (Sandbox Code Playgroud)

按照惯例,该目录中有一个文件,总是名为myfile.txt.

现在我希望通过我的bean里面的@Value注释来访问目录和文件.有时候我想把它们作为字符串访问,有时候作为java.io.Files访问,有时候作为org.springframework.core.io.FileSystemResource(顺便提一下,它开箱即用!).但是因为连接字符串不是一种选择.

所以我当然可以做的就是宣布两者,但我最终会这样做

myDir=/path/to/mydir
myFile/path/to/mydir/myfile.txt
Run Code Online (Sandbox Code Playgroud)

我想避免这种情况.

所以我提出了一个@Configuration类,它接受属性并将其添加为新的PropertySource:

@Autowired
private ConfigurableEnvironment environment;

@Value("${myDir}")
private void addCompleteFilenameAsProperty(Path myDir) {
    Path absoluteFilePath = myDir.resolve("myfile.txt");

    Map<String, Object> props = new HashMap<>();
    props.put("myFile, absoluteFilePath.toString());
    environment.getPropertySources().addFirst(new MapPropertySource("additional", props));
}
Run Code Online (Sandbox Code Playgroud)

如您所见,在我的上下文中,我甚至创建了一个PropertyEditor,它可以转换为java.nio.file.Path.

现在问题是,由于某种原因,这"在我的机器上工作"(在我的IDE中),但不在预期的目标环境上运行.我得到了

java.lang.IllegalArgumentException: Could not resolve placeholder 'myFile' in string value "${myFile}"
Run Code Online (Sandbox Code Playgroud)

java spring

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

当tomcat停止时,请求会发生什么

当您以"正常"方式停止或重新启动tomcat时,正在处理的http请求会发生什么?它们会被处理,直到响应完成或者http线程被中断了吗?有没有办法配置优雅的停止?

tomcat servlets http request

13
推荐指数
1
解决办法
5158
查看次数

如何配置Spring Batch从不重试,总是跳过

我认识到使用 spring-batch 和基于块的读取器/处理器/编写器设置会出现一些不需要的和不直观的行为,其中项目编写器被调用的频率比我想要的要多。

我想要一个设置,在任何异常情况下,作者都不会被再次调用。

请看一下这个非常精简的演示步骤初始化:

stepBuilder
.chunk(1)
.reader(new ListItemReader<>(List.of("1", "2", "3")))
.writer(items -> {
    LOGGER.info("About to write " + items);
    throw new RuntimeException();
})
.faultTolerant()
.skipPolicy((throwable, skipCount) -> true)
.retryPolicy(new MaxAttemptsRetryPolicy(1))
// or
//.retryPolicy(new NeverRetryPolicy())
Run Code Online (Sandbox Code Playgroud)

无论我使用什么组合skipPolicyretryPolicy结果总是

About to write [1]
About to write [1]
About to write [2]
About to write [2]
About to write [3]
About to write [3]
Run Code Online (Sandbox Code Playgroud)

我的期望 - 或者我想实现的目标 - 是在每个异常之后处理/写入下一个项目。

可以在这里找到完全可执行(但仍然简约)的演示 https://github.com/LorenzSchumann/spring-batch-demo-simple

可以在此处找到 JPA 的类似版本。https://github.com/LorenzSchumann/spring-batch-demo-jpa该演示还触发两种不同类型的异常。乐观锁定场景是我真正关心的。

spring-batch

10
推荐指数
1
解决办法
605
查看次数

如何在上下文卸载时关闭连接池?

在开发了几个与spring,hibernate和c3p0作为连接池有类似设置的webapp之后我想调查我每次都注意到的问题:Connectionpool保持连接,直到你关闭tomcat(或你的应用服务器).

今天我用这四个依赖项创建了最基本的项目:

org.springframework:spring-web
org.springframework:spring-orm
org.hibernate:hibernate-core
c3p0:c3p0
Run Code Online (Sandbox Code Playgroud)

(加上特定的JDBC驱动程序).

我的web.xml只创建一个ContextLoaderListener来设置应用程序上下文.

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext.xml
    </param-value>
</context-param>

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

应用程序上下文由两个bean组成 - 数据源和会话工厂:

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass">
        <value>org.postgresql.Driver</value>
    </property>
    <property name="jdbcUrl">
        <value>jdbc:postgresql://localhost/mydb</value>
    </property>
    <property name="user">
        <value>usr</value>
    </property>
    <property name="password">
        <value>pwd</value>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

当我启动webapp并查看jconsole的MBean或检查我的DBMS是否打开连接时,我注意到c3p0创建的三个初始连接.

问题:当我告诉tomcat停止webapp时,它们仍然存在!

我创建了另一个ServletContextListener,它只实现了contextDestroyed方法并以编程方式关闭了sessionFactory(并且还注销了JDBC驱动程序,这也是不自动完成的).代码是:

@Override
public void contextDestroyed(ServletContextEvent sce) {

    ...
    sessionFactory().close();

    // deregister sql driver(s)
    Enumeration<Driver> drivers = DriverManager.getDrivers();
    while (drivers.hasMoreElements()) {
        Driver driver = drivers.nextElement();
        try {
            DriverManager.deregisterDriver(driver);
            log.info("deregistering …
Run Code Online (Sandbox Code Playgroud)

spring tomcat hibernate c3p0

8
推荐指数
1
解决办法
9968
查看次数

crashlytics有公共API吗?

我们目前正在评估崩溃跟踪器与移动应用程序的集成,该移动应用程序是使用c ++(以及特定的虚幻引擎4)以跨平台方式开发的.

两个可能的候选人是crashlytics和hockeyapp.虽然hockeyapp暴露了一个REST Api来发送崩溃(请参阅http://support.hockeyapp.net/kb/api/api-crashes#post-custom-crashes),但我们找不到类似于crashlytics的东西.我们更喜欢这样的自定义REST解决方案,因为使用Objective-C使用Java和iOs应用程序的Android应用程序似乎很容易集成crashlytics.

有没有办法将自定义崩溃发送到崩溃剂?

c++ mobile android ios crashlytics

6
推荐指数
1
解决办法
3277
查看次数