小编Vij*_*van的帖子

Spring 4 - addResourceHandlers无法解析静态资源

我的maven spring项目目录结构如下所示.我正在使用基于Spring-4注释的配置.我配置如下的资源.我尝试了许多Stackoverflow问题和其他网站中提出的方法

Spring 4加载静态资源

http://imwill.com/spring-mvc-4-add-static-resources-by-annotation/#.U5GZlXKs9i4

但是jsp文件无法加载资源,所有静态内容请求都返回404错误.我在jsp中试过这些东西,

 <link href="resources/css/bootstrap.css" rel="stylesheet" media="screen">
 <link href="/resources/css/bootstrap.css" rel="stylesheet" media="screen">
 <link href="css/bootstrap.css" rel="stylesheet" media="screen">
Run Code Online (Sandbox Code Playgroud)

编辑:我正在使用servlet 2.5,因为到目前为止我无法将我的项目从JBoss 5升级到更高版本.JBoss5不支持servlet 3,那重要吗?

@Configuration
@ComponentScan("com.mgage.mvoice")
public class MyAppWebConfig extends WebMvcConfigurerAdapter {
     public void addResourceHandlers(ResourceHandlerRegistry registry) {  
        // I tried these many combinations separately.

        ResourceHandlerRegistration resourceRegistration = registry
            .addResourceHandler("resources/**");
        resourceRegistration.addResourceLocations("/resources/**");
        registry.addResourceHandler("/css/**").addResourceLocations("/css/**");
        registry.addResourceHandler("/img/**").addResourceLocations("/img/**");
        registry.addResourceHandler("/js/**").addResourceLocations("/js/**");
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("classpath:/resources/"); 
              // do the classpath works with the directory under webapp?
     }

}
Run Code Online (Sandbox Code Playgroud)

项目结构

java spring spring-mvc spring-annotations spring-4

29
推荐指数
3
解决办法
8万
查看次数

跨线程共享jdbc"连接"

我有一个定期运行的主线程.它使用setAutoCommit(false)打开一个连接,并作为对少数子线程的引用传递,以执行各种数据库读/写操作.在子线程中执行相当多的操作.在所有子线程完成其数据库操作之后,主线程将使用打开的连接提交事务.请注意,我在ExecutorService中运行线程.我的问题是,建议跨线程共享连接吗?如果"是",请查看以下代码是否正确实现它.如果"否",在多线程场景中执行事务的其他方法是什么?欢迎提出意见/建议/新意见.伪代码......

Connection con = getPrimaryDatabaseConnection();
// let me decide whether to commit or rollback
con.setAutoCommit(false);

ExecutorService executorService = getExecutor();
// connection is sent as param to the class constructor/set-method
// the jobs uses the provided connection to do the db operation
Callable jobs[] = getJobs(con); 
List futures = new ArrayList();
// note: generics are not mentioned just to keep this simple
for(Callable job:jobs) {
    futures.add(executorService.submit(job));
}
executorService.shutdown();
// wait till the jobs complete
while (!executorService.isTerminated()) {
  ;
}

List result …
Run Code Online (Sandbox Code Playgroud)

java multithreading transactions jdbc

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

使用Proguard混淆WAR文件

我想混淆构建为WAR归档的Web应用程序,因为这个敏感的应用程序首次部署在我们的数据中心之外.我尝试使用Proguard GUI工具来混淆输入战争,使用UI应用程序所需的所有服务jar,以及其他外部依赖项.虽然Proguard成功运行了一些警告,例如,库类的重复定义[javax.servlet.UnavailableException],但输出war不包含类,但是lib包含库jars和web.xml文件.我搞乱的任何步骤?关于此的任何正确文件?如果有人能够提供正确的文档或步骤来成功地使用依赖项目(.jar文件)和其他外部jar文件(不需要混淆)来混淆WAR文件,我将不胜感激.

java obfuscation proguard

11
推荐指数
1
解决办法
7531
查看次数

在Wildfly 8.2中配置日志的正确方法

我在设置Wildfly-8.2.0中的日志时感到困惑.最初我使用了自己的日志记录系统,在WAR文件中内置了log4j.xml,一切都运行得很好.但是,当我对日志配置进行任何更改时,我需要重新部署应用程序以使更改生效.所以,我切换到了JBoss记录器子系统.下面是配置我做的standalone.xmljboss-cli

/subsystem=logging/custom-handler=myplatform:add(class=org.apache.log4j.RollingFileAppender, module=org.jboss.log4j.logmanager, formatter="%d{.yyyy-MM-dd} %-5p [%c] (%t) %s%E%n", properties={MaxFileSize=1024000,maxBackupIndex=20,file="${jboss.server.log.dir}/myplatform-debug.log"})
Run Code Online (Sandbox Code Playgroud)

所以它添加了以下配置 standalone.xml

            <custom-handler name="example" class="org.apache.log4j.RollingFileAppender" module="org.jboss.log4j.logmanager">
                <formatter>
                    <pattern-formatter pattern="%d{.yyyy-MM-dd} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
                <properties>
                    <property name="MaxFileSize" value="1024000"/>
                    <property name="maxBackupIndex" value="20"/>
                    <property name="file" value="${jboss.server.log.dir}/ott-platform-log.log"/>
                </properties>
            </custom-handler>
Run Code Online (Sandbox Code Playgroud)

然后是记录器

<logger category="com.mycompany.project.module1">
  <level name="DEBUG"/>
    <handlers>
      <handler name="myplatform"/>
    </handlers>
</logger>
Run Code Online (Sandbox Code Playgroud)

一切正常,但我的所有应用程序日志也都记录在服务器日志中.而且,在控制台日志中也是如此.我不希望这种情况发生,毕竟我已经为我的项目单独配置了记录器!如何停止服务器登录我的日志登录到server.log?或者有没有办法使用appender?如果是这样的话?

java logging jboss wildfly wildfly-8

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

Kafka如何在经纪人之间分配主题分区

我在3个不同的VM中有3个Kafka代理,其中一个还运行Zookeeper.我现在创建一个包含8个分区的主题.生产者在创建的"主题"上将消息推送到这些代理组.

  • Kafka如何在经纪人之间分配主题及其分区?
  • 当新的Kafka Broker加入群集时,Kafka是否会重新分发主题?
  • 创建主题后是否可以增加主题分区?

apache-kafka kafka-consumer-api

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

使用Redis跟踪在线用户

我想跟踪有多少用户在线,我使用Redis来解决这个问题,因为一个或多个应用程序实例访问此缓存以显示状态.在每次新登录时,Redis都会使用用户ID在"online_users"键上更新,并在每次注销时删除用户.这种方法是否正确,如果不是如何构建这种方法以获得最佳性能,以及有些大数据集?

"online_users" -> {
     user_s23,user_1f3,user_1mn,user_xd3
}
Run Code Online (Sandbox Code Playgroud)

用户信息在缓存中可用,是否将状态包含为另一个属性?

user_s23 {
name, id, profile_pic, type, etc, status:active/inactive
}
Run Code Online (Sandbox Code Playgroud)

虽然这两种方法可以用Redis跟踪在线用户.哪一个更快?问题的答案比较了两种方法,提到的第一个链接不可用,所以我无法理解其他背景.

redis

8
推荐指数
2
解决办法
4876
查看次数

从android模拟器调试https

我有一个Android(4.2)应用程序,它使用https与Web服务进行通信.我想调试/记录每个出去的https.我有fiddler和wireshark来调试它们,但一切看起来都是加密的.可以使用模拟器和fiddler/wireshark设置中间人攻击来解码和显示http url及其参数吗?

https android fiddler man-in-the-middle wireshark

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

按对象分组-Java流

我有一个数据列表,如下所示:

List<Data> data = new ArrayList<Data>();
data.add(new Data("d1", "option1"));
data.add(new Data("d2", "option1"));
data.add(new Data("d1", "option2"));
data.add(new Data("d3", "option1"));
data.add(new Data("d3", "option2"));
data.add(new Data("d3", "option3"));
Run Code Online (Sandbox Code Playgroud)

结构如下:

class Data {
    private String name;
    private String option;
    private List<String> options = new ArrayList<>();
    public Data(String name, String option) {
        this.name = name;
        this.option = option;
    }

    public void addOption(String option) {
        options.add(option);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何根据名称及其选项将项目分组到新数组中,

[
"d1": {
    "name": "d1",
    "options": ["option1", "option2"]
},
"d2": {
    "name": "d2",
    "options": ["option1"]
},
"d3": { …
Run Code Online (Sandbox Code Playgroud)

java collections java-8 java-stream

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

入口路由-基于路径的路由到其他React应用

我在Openshift中独立部署了不同的React应用及其后端服务。其中有一个应用程序,用户可以使用此应用程序中提供的链接登录并导航到其他应用程序。

目前,每个应用程序的链接都直接指向react应用程序的“ Openshift Route”(类似于Kube Ingress)。

但是,对于生产区域,我们必须更改其工作方式。例如,存在一个公开领域apps.mydomain.com。我们应该以这种方式加载应用程序上每个应用程序的链接,apps.mydomain.com/reactapp1应该加载reactapp1和reactapp2 apps.mydomain.com/reactapp2等等。

因此,有一个配置了路径的Ingress

rules:
- host: apps.mydomain.com
  http:
    paths:
      - backend:
          serviceName: home
          servicePort: 8080
        path: /
      - backend:
          serviceName: react-app-1
          servicePort: 8080
        path: /reactapp1
      - backend:
          serviceName: app-1-api
          servicePort: 8080
        path: /app1/api
      - backend:
          serviceName: react-app-2
          servicePort: 8080
        path: /reactapp2
      - backend:
          serviceName: app-2-api
          servicePort: 8080
        path: /app2/api
Run Code Online (Sandbox Code Playgroud)

当我点击该网址时,https://apps.mydomain.com它将加载home应用程序,登录后,单击该应用程序链接后,该应用程序将不会加载。尽管我可以看到浏览器标题已更改为导航的应用程序,但出现此错误Uncaught SyntaxError: Unexpected token <

经过大量搜索之后,我发现如果需要从根目录而不是根目录部署React应用程序,则必须对其进行不同的配置。

我想念什么?我在哪里做错了?进入或响应应用程序构建?我可以在同一个域中使用不同的Ingress,但对每个react-app及其后端api使用不同的路径吗?

openshift reactjs kubernetes kubernetes-ingress

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

监控 LMAX 干扰器

如何监控LMAX Disruptor?假设我有 3 个环形缓冲区,并希望提供一个 ui 来为我提供环形缓冲区的信息。

java disruptor-pattern lmax

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

使用 Spring &amp; Lettuce 接收 Redis 流数据

Spring boot每当Redis流附加新记录时,我都有以下代码来接收值。问题是接收者永远不会收到任何消息,而且订阅者在使用 进行检查时subscriber.isActive()始终处于非活动状态。这段代码有什么问题?我错过了什么?文档供参考。

在 spring boot 启动时,初始化必要的 redis 资源

生菜连接工厂

@Bean
public RedisConnectionFactory redisConnectionFactory() {
    return new LettuceConnectionFactory("127.0.0.1", 6379);
}
Run Code Online (Sandbox Code Playgroud)

来自连接工厂的 RedisTemplate

@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory connectionFactory) {
    RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
    redisTemplate.setConnectionFactory(connectionFactory);
    return redisTemplate;
}
Run Code Online (Sandbox Code Playgroud)

休息控制器将数据附加到 redis 流

@PutMapping("/{name}")
public String post(@PathVariable String name) {
    return redisTemplate.opsForStream().add(StreamRecords.newRecord().in("streamx").ofObject(name)).getValue();
}
Run Code Online (Sandbox Code Playgroud)

JMS 风格的命令式消息监听器

@Component
public class MyStreamListener implements StreamListener<String, MapRecord<String, String, String>> {

@Override
public void onMessage(MapRecord<String, String, String> message) {
    System.out.println("message received: " …
Run Code Online (Sandbox Code Playgroud)

redis spring-data-redis

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

RabbitMQ 中的“消费者利用率”是什么?它与预取计数有何关系?

RabbitMQ 中的消费者利用率(显示在 RabbitMQ 管理控制台中)是什么?是消费者通过消费消息来利用 RabbitMQ 的百分比吗?还是我理解错了?如果是的话如何让消费者100%充分利用RabbitMQ?因为,当我增加消费者时,我看不到百分比有任何增加,但在新消费者启动时只有几分之一秒。我无法从工具提示中提供的小解释中得到很多信息。

此外,工具提示文档说预取计数会以某种方式影响消费者的利用率,那么是否有一种公式可以修复这些数字?

so many consumers = this many fetch counts
Run Code Online (Sandbox Code Playgroud)

(或者)

time taken by a consumer to process a messages = this many fetch count
Run Code Online (Sandbox Code Playgroud)

java rabbitmq

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

Spring security 3.2 - @PostAuthorize 表达式根据方法的返回对象评估主体

我使用 spring security 来保护和评估 @PostAuthorize 和 @PreAuthorize 注释中的表达式以授权服务方法。我有一个需求,需要检查返回的对象是否与登录系统并调用此方法的用户 ID 相同。

// this allows the ids of other users too
@PostAuthorize("returnObject!=null?returnObject.userId==principal.account.acid:true")
public AudioClip findAudioClip(int clipId) {
     .....
     AudioClip clip = dao.findById(clipId);
     // may also be null
     return clip;
}
Run Code Online (Sandbox Code Playgroud)

音频剪辑程序

@Component
public class AudioClip implements java.io.Serializable {

private java.math.BigDecimal id;
private java.lang.Integer    userId;
.....
}
Run Code Online (Sandbox Code Playgroud)

从数据库中提取的对象包含创建此 db 对象的 userId。因此,只有他才有资格访问该组件。如何比较returnObject.userId和登录系统的userid?

java spring spring-security spring-el spring-4

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