小编Tre*_*red的帖子

我应该将Spring或Guice用于Tomcat/Wicket/Hibernate项目吗?

我正在构建一个使用Linux,Apache,Tomcat,Wicket,JPA/Hibernate和MySQL的新Web应用程序.我的主要需求是依赖注入,Spring和Guice都可以做得很好.我想我需要Spring和JTA带来的事务支持,但我不确定.

该网站可能有大约20页,我不希望有大量的流量.

我应该使用Spring还是Guice?

随意提问和后续问题,我会尽力更新.

spring wicket jpa guice

14
推荐指数
3
解决办法
5064
查看次数

如何针对Knex进行单元测试时,如何模拟假数据库?

我一直在成功使用Knex连接到后端数据库.但我希望能够对我的代码进行单元测试.有没有办法模拟数据库连接?

我尝试过使用proxyquire,但似乎无法让它工作.

问题似乎与Knex的初始化方式有关.

var knex = require('knex')({
  client: 'mysql',
  connection: {}
});
Run Code Online (Sandbox Code Playgroud)

我设置knex在我的单元测试中被嘲笑.

myService = proxyquire('../app/myService', {
        'knex': knexProxy
});
Run Code Online (Sandbox Code Playgroud)

我的服务包括knex.

var knex = require('knex').knex,
Run Code Online (Sandbox Code Playgroud)

当我的服务运行查询时,它会失败.

var sql = knex("table_name");
sql.insert(rowToInsert, "auto_increment_id");
sql.then(function (insertId) {
    resolve();
}, function (err) {
    reject(err);
});
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我似乎无法在尝试连接之前捕获请求.

我也试图创建一个自定义的Knex客户端,但这还没有成功.

javascript unit-testing node.js knex.js proxyquire

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

无法从主机访问Docker端口

我有一个新的Spring Boot应用程序,我刚刚完成并尝试将其部署到Docker.在容器内部,应用程序正常工作.它使用端口9000进行面向用户的请求,使用9100进行健康检查等管理任务.当我启动docker实例并尝试访问端口9000时,我收到以下错误:

curl: (56) Recv failure: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)

经过大量的实验(通过curl),我确认了几个不同的配置,应用程序在容器内运行良好,但是当我尝试将端口映射到主机时它没有连接.我尝试使用以下命令启动它.它们都不允许我从主机访问端口.

docker run -P=true my-app
docker run -p 9000:9000 my-app
Run Code Online (Sandbox Code Playgroud)

解决方法

这一点的唯一方法工作是使用--net主机选项,但是这并不让我在该主机上运行多个集装箱.

docker run -d --net=host my-app
Run Code Online (Sandbox Code Playgroud)

端口和暴露实验

我使用了各种版本的Dockerfile,暴露了不同的端口,如9000和9100或只有9000.这些都没有帮助.这是我的最新版本:

FROM ubuntu
MAINTAINER redacted

RUN apt-get update
RUN apt-get install openjdk-7-jre-headless -y
RUN mkdir -p /opt/app

WORKDIR /opt/app

ADD ./target/oauth-authentication-1.0.0.jar /opt/app/service.jar
ADD config.properties /opt/app/config.properties

EXPOSE 9000
ENTRYPOINT java -Dext.properties.dir=/opt/app -jar /opt/app/service.jar
Run Code Online (Sandbox Code Playgroud)

Hello World有效

为了确保我可以运行Spring Boot应用程序,我尝试了Simplest-Spring-Boot-MVC-HelloWorld,它运行良好.

Netstat结果

我使用netstat从主机和容器进行端口扫描:

来自主持人

root@my-docker-host:~# nmap 172.17.0.71 -p9000-9200

Starting Nmap 6.40 …
Run Code Online (Sandbox Code Playgroud)

java linux curl docker spring-boot

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

为什么在yarn工作空间的子包中找不到tsc命令?

我使用的是纱线版本 3.2.4。我的根目录中有一个 package.json ,如下所示:

{
  "scripts": {
    "compile": "tsc --build",
  },
  "devDependencies": {
    "typescript": "^4.8.4"
  }
}
Run Code Online (Sandbox Code Playgroud)

在packages/foo 中,我有这个package.json

{
  "scripts": {
    "compile": "tsc --build"
  },
  "devDependencies": {
  }
}
Run Code Online (Sandbox Code Playgroud)

当我yarn compile从根运行时,tsc 编译正确。但这失败了:

cd packages/foo
yarn compile
Run Code Online (Sandbox Code Playgroud)

command not found: tsc

如果我更改子包以包含 typescript 作为 devDependency 那么它就可以工作。

为什么 devDependency 不继承自父 package.json?

yarn-v2

5
推荐指数
0
解决办法
239
查看次数

为什么我不能内联创建新的Java数组?

为什么第一个工作而第二个工作不起作用?

1)好的

String[] foo = {"foo"};
bar.setArray(foo);
Run Code Online (Sandbox Code Playgroud)

2)坏

bar.setArray({"foo"});
Run Code Online (Sandbox Code Playgroud)

有没有快速的方法在一行上创建一个String []?

java arrays

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

调用java集合使用对象的接口而不是对象的类?

我想使用所有实现相同接口的对象集合来调用方法.这可能吗?

public class GenericsTest {
    public void main() {
        ArrayList<Strange> thisWorks = new ArrayList<>();
        isAllStrange(thisWorks);
        ArrayList<Person> thisDoesNot = new ArrayList<>();
        isAllStrange(thisDoesNot);
    }

    public boolean isAllStrange(ArrayList<Strange> strangeCollection) {
        for (Strange object : strangeCollection) {
            if (object.isStrange())
                return true;
        }
        return false;
    }

    public interface Strange {
        public boolean isStrange();
    }

    public class Person implements Strange {
        public boolean isStrange() {
            return true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java collections

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

如何在不获得太多重定向错误的情况下重定向到我的同一URL?

我需要将用户从http://myurl.com/Login.action重定向到http://myurl.com/app/Login.action

我尝试了这个但是我收到一个错误,说我得到了太多的重定向.

RedirectMatch ([A-Za-z]*)\.action$ http://myurl.com/app/$1.action

如何让apache重定向到同一个URL,但只重定向一次.

会这样的吗?

RedirectMatch ![app\/]([A-Za-z]*)\.action$ http://myurl.com/app/$1.action

regex apache mod-rewrite redirect

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