小编and*_*w.z的帖子

没有嵌入式servlet容器的Spring启动

我有一个spring-boot Web应用程序,但我不想在嵌入式Tomcat/Jetty中启动它.禁用嵌入式容器的正确方法是什么?

如果我喜欢:

        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
           <exclusion>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-tomcat</artifactId>
           </exclusion>
        </exclusions>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我一直在

org.springframework.context.ApplicationContextException: Unable to start embedded container; 
Run Code Online (Sandbox Code Playgroud)

spring-boot

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

字符串拆分和连接

我有一组字符串.我需要能够将此集合中的项目连接成一个字符串,然后将该字符串向后拆分并获取原始字符串集合.当然,我需要为连接/拆分操作引入一个分隔符.鉴于原始字符串可以包含任何字符,我还需要处理分隔符转义.我的问题很简单 - 是否有一个Java类/库可以提供开箱即用的所需功能?就像是:

String join(String[] source, String delimiter, String escape);
String[] split(String source, String delimiter, String escape);
Run Code Online (Sandbox Code Playgroud)

或类似的,无需手动完成工作?

java

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

推土机5.3.2.以编程方式设置定制转换器

如何以编程方式为推土机设置自定义转换器?以下代码不起作用:

定制转换器实现:

class ConverterImpl extends DozerConverter<A, B> {

ConverterImpl() {
    super(A.class, B.class);
}

@Override
public B convertTo(A source, B destination) {
    return destination;
}

@Override
public A convertFrom(B source, A destination) {
    return destination;
}
}
Run Code Online (Sandbox Code Playgroud)

测试代码:

DozerBeanMapper mapper = new DozerBeanMapper();
mapper.setCustomConverters(Collections.<CustomConverter>singletonList(new ConverterImpl()));
A a = new A(); 
B b = mapper.map(a, A.class);  
Run Code Online (Sandbox Code Playgroud)

运行上面的代码后,不会调用自定义转换器.怎么了?

java dozer

7
推荐指数
1
解决办法
8830
查看次数

Spring-JDBC作为独立库

我有一个不使用Spring容器的小应用程序.现在需要这个应用程序访问数据库,只需几个小查询,没什么复杂的.虽然我可以用纯JDBC做到这一点,但我真的很想使用Spring-JDBC库.我担心的是,如果不将太多的Spring引入应用程序,它是否可以轻松使用."太多的春天"我的意思是必须创建弹簧容器,过多的外部库依赖等.请建议.

java spring-jdbc

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

同步群集中的Web应用程序

我有一个Web服务器集群,每个服务器运行相同的Java Web应用程序.所有这些Web应用程序实例共享相同的数据库(用于数据存储)和相同的网络文件存储(它们保存一些必需的文件).

我需要能够同步Web应用程序的实例.例如,其中一个应用程序实例从客户端接收某个请求,它会进行一些重新计算并更新其内部缓存.此时,我需要为集群中的所有其他Web应用程序更新内部缓存,以便它们中的每一个都在同一数据集上运行.

实现此类功能的最佳方法是什么?当然,我可以实现一些定制组件,它将定期轮询共享资源(数据库表中的标志或文件存储上的文件),并在满足条件时启动所需的处理.但也许我可以使用一些已经存在的库/组件/应用程序?

java web-applications

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

嵌入式Java键值存储

我正在寻找在我的应用程序中使用的持久键值存储.特别:

  1. 它必须可嵌入Java应用程序中.纯Java解决方案将是最好的.
  2. 数据必须保留在磁盘上,不能在内存中存储.内存占用量大小很重要,键值映射的总体大小可能非常大.理想情况下,我希望在存储上实现某种LRU缓存.
  3. 键和值都是字符串(不需要支持Java对象序列化等).
  4. 并发读/写很重要.

在这种情况下,最好的选择是什么?

java nosql key-value-store

6
推荐指数
2
解决办法
7109
查看次数

网络应用中的网址共享

这是我需要解决的问题.我有一个Web应用程序,基本上允许用户查询某些服务器数据源并查看查询结果 - 一种报告应用程序.用户可以通过指定多个预定义参数类型的值来创建查询.假设A1 .... AN是可能参数的列表,因此查询看起来像*A1 ="some_value"&A2 ="some_other_value"&...&AN ="whatever"*.我需要一种方法在应用程序用户之间共享这些查询,这是一种"书签"功能.我可以预见两种不同的方法可以用来解决这个问题:

  1. 将查询合并到URL中.所以我会将*http://www.myapp.com/q=possibly_very_very_very_long_string*作为可以在人们之间共享的URL.我个人不喜欢这种方法.长URL可能是一团糟.通过电子邮件或任何其他传输方式发送,复制/粘贴等肯定会导致糟糕的用户体验

  2. 使用服务器端存储将这些长"网址"映射到一些更加用户友好的网址.琐碎的例子是:http://www.myapp.com/q=12345其中12345将是应用程序数据库中该查询的ID.这种方法对我来说更具吸引力.

您对上述内容有何看法?也许我错过了什么?

web-applications

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

双射"整数< - >字符串"功能

这是一个问题,我正在尝试为其创建最佳解决方案.我有一组有限的非负整数,范围为[0 ... N].我需要能够将此集合中的每个数字表示为字符串,并能够将此字符串向后转换为原始数字.所以这应该是一个双射函数.

其他要求是:

  1. 数字的字符串表示应该至少在某种程度上模糊原始数字.像f(x)= x.toString()这样的原始解决方案是行不通的.
  2. 字符串长度很重要:越少越好.
  3. 如果知道K的字符串表示,我希望猜测K + 1的字符串表示是非平凡的(在某种程度上).

对于p.1和p.2,显而易见的解决方案是使用类似Base64(或任何BaseXXX以适合所有值)的表示法.但是我们能否以最小的额外努力适应p.3?常识告诉我,我还需要一个双射"String < - > String"函数用于BaseXXX值.有什么建议?或者可能有比BaseXXX更好的东西来满足所有3个要求?

algorithm bijection

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

同步模式

我有一个名为"Channel"的类,定义了两个方法:

class Channel {

    void read(){...}
    void write(){...}
}
Run Code Online (Sandbox Code Playgroud)

在多线程环境中使用了这个类的实例.多个线程定期从通道读取,而一个线程周期性地写入它.读操作是线程安全的,因此可以同时进行多次读操作.但是,一旦写入操作开始,必须阻止读取线程,直到写入操作完成.必须尽可能快地保持读取操作并避免消耗资源的同步例程.

实施此类行为的最合适模式是什么?也许java类或库有帮助吗?

java concurrency

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

解决NFS问题

我们的应用程序使用嵌入式Solr实例进行搜索 数据目录位于NFS上,我无法更改.Solr的用法非常简单,有一个线程定期更新索引,并且有几个读者线程 - 这些都在一个java进程中.没有其他Solr交互发生.

使用默认的"solrconfig.xml",我有时遇到"java.nio.channels.OverlappingFileLockException".据我所知,原因实际上是"SimpleFSLockFactory"与NFS无法正常工作.

问题:

  1. 鉴于上面描述的应用场景(没有并发索引修改),NoLockFactory不应该足够吗?使用NoLockFactory有什么缺点吗?如果我设置NoLockFactory,我会在错误日志中收到一些条目,说"配置警告:锁被禁用".为什么该消息会进入错误日志?这真的被认为是一个错误的案例,为什么?

  2. 也许有比使用"NoLockFactory"更好的解决方案?

  3. 不确定这与NFS有关,但有时(很少见)我的索引被破坏了,并且在尝试更新索引时我得到了很多"java.io.FileNotFoundException:_i.fdx".除了手动删除整个索引目录并从头开始之外,没有办法解决这个问题.为什么会发生这种情况,是否有任何优雅的方法可以自动检测损坏的索引并恢复?

indexing solr nfs

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