小编ilo*_*tie的帖子

在Tomcat/Jetty上部署的Spring启动应用程序与.war文件

在我的例子中,让我们考虑使用Spring Boot创建和配置的简单RESTful服务.该服务与数据库(例如Postgres)通信.

有什么区别:

  • 构建一个Spring Boot .jar文件并通过我的远程公共主机运行它java -jar myservice.jar

要么

  • .war将其打包到文件并在Tomcat/Jetty上部署?

第一个选项似乎更容易,你只需要运行一个.jar.在第二个选项中,您需要创建Tomcat实例,运行它然后部署.war文件.还有其他区别吗?这两种方法的优缺点是什么?

java tomcat jetty spring-boot

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

SpringBoot 1.5.x +安全+ OAuth2

我有一个带有OAuth2安全性的Spring Boot REST API.

今天我升级我的版本的spring-boot-starter-parent,从1.4.21.5.2.

变化让我很困惑.

之前,我可以使用Postman测试我的REST API.当我的访问令牌不正确或我没有特定资源的权限时,服务器响应如下:

{
  "error": "access_denied",
  "error_description": "Access is denied"
}
Run Code Online (Sandbox Code Playgroud)

现在它一直将我重定向到/login页面...当我登录时 - 它显示我的资源而没有任何OAuth2身份验证...

我试图禁用它,我发现了这个神奇的属性:

security.oauth2.resource.filter-order = 3
Run Code Online (Sandbox Code Playgroud)

此行关闭重定向到登录页面.

但是,我的问题是:

  • 这两个版本之间在安全方面发生了什么?
  • 这个"奇怪"的行是唯一有效的修复方法吗?
  • 这个登录页面的目的是什么以及它正在使用什么身份验证(我检查了谷歌浏览器中的请求和响应,我看不到任何访问令牌和oauth2的东西,所以它只使用用户存储库?)

我的代码中一些更重要的部分:

的pom.xml

<!--- .... -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
</parent>
<properties>
    <!--- .... -->
    <spring-security-oauth.version>2.1.0.RELEASE</spring-security-oauth.version>
    <!--- .... -->
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Monitor features -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-actuator</artifactId>
    </dependency>
    <!-- Security + OAuth2 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId> …
Run Code Online (Sandbox Code Playgroud)

java oauth spring-security oauth-2.0 spring-boot

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

RETURN QUERY vs RETURN QUERY EXECUTE

PostgreSQL 39.6.控制结构: RETURN QUERY有一个变量RETURN QUERY EXECUTE,它指定要动态执行的查询.可以通过USING将参数表达式插入到计算的查询字符串中,其方式与EXECUTE命令中的方式相同.

动态意味着什么?

这两个语句之间有什么区别(带func_param参数的内部函数):

RETURN QUERY SELECT * FROM foo WHERE foo_col = func_param;
Run Code Online (Sandbox Code Playgroud)

RETURN QUERY EXECUTE 'SELECT * FROM foo WHERE foo_col = $1' USING func_param;
Run Code Online (Sandbox Code Playgroud)

postgresql

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

PRIMARY KEY与CONSTRAINT pk_id PRIMARY KEY(id)

postgres(和许多其他人)中,我们可以primary key用两种不同的方式声明:

方法1:

create table MyTable(
    MyId SERIAL PRIMARY KEY
)
Run Code Online (Sandbox Code Playgroud)

方法2:

create table MyTable(
    MyId SERIAL,
    CONSTRAINT pk_myid PRIMARY KEY (MyId)
)
Run Code Online (Sandbox Code Playgroud)

我的问题是:这些声明之间是否有任何区别(语法除外)?也许Hibernate映射?或者也许其中一个被称为好习惯?

我已经知道的 - 第二个用于设置PRIMARY KEY多列.

postgresql hibernate primary-key

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

将 CXF 服务的客户端接收超时设置为 4 分钟以上

我已经生成了一个 CXF 服务并120000ms = 2min为两者设置了超时:

requestContext.put("javax.xml.ws.client.receiveTimeout", 120000);
requestContext.put("javax.xml.ws.client.connectionTimeout", 120000);
Run Code Online (Sandbox Code Playgroud)

它工作正常,我已经对其进行了测试20s, 1min, 3min- 每次它都在等待响应的时间。

但是,当我想将其设置为5min. 服务仅等待响应~240800ms = ~4min

我正在调用 jboss esb 服务。这个持续最大5min。CXF 服务是.jar从我的 PC的简单应用程序内部调用的,因此之间没有其他服务器/容器(如 tomcat 等)。

有什么想法可以修复我的超时设置吗?

用一个 Apache CXF 3.0.1

编辑

我现在意识到我收到 2 条不同的消息取决于我的超时设置:

  • 如果我将它设置为<=4min(通过我的或@pedrofb 方法),那么在这段时间之后我会得到:

    org.apache.cxf.interceptor.Fault:无法发送消息。在 org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64) 在 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) 在 org.apache.cxf.endpoint.endpoint. .doInvoke(ClientImpl.java:516)

    引起:java.net.SocketTimeoutException: SocketTimeoutException invoking http://esb:8080/MyService/ebws/Category/MyService : Read timed out

  • 如果我将它设置为>4minor 0,我会得到:

    javax.xml.ws.soap.SOAPFaultException: 没有收到服务 [Category:MyService] 的响应,被告知不要重试。

老实说,我很困惑什么是预期结果(我认为是第一个)

编辑 2

我已经MyService通过 …

java web-services timeout esb jboss-esb

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