小编Ron*_*las的帖子

Spring JSF集成:如何在JSF托管bean中注入Spring组件/服务?

我知道托管bean的工作方式类似于控制器,因为您唯一的任务是将视图层与模型"链接"起来.

要使用bean作为托管bean,我必须声明@ManagedBean注释,这样做我可以直接与bean通信JSF.

如果我想在这个managedBean中注入一些组件(来自Spring),我有两种可能的方法:

  1. 在ManagedBean中选择属性(如"BasicDAO dao")并@ManagedProperty(#{"basicDAO"})在属性上方声明.这样做,我"basicDAO"在ManagedBean中从Spring 注入bean .

  2. 在ManagedBean Class中声明了@Controller,然后我将拥有@ManagedBean@Controller注释一起.在物业中"BasicDAO dao"我必须使用@AutowiredSpring.

我的理解是否正确?

integration jsf spring dependency-injection managed-bean

39
推荐指数
2
解决办法
3万
查看次数

通过Javascript发送授权令牌承载

我正在尝试通过 Javascript 向 REST 端点发送授权令牌承载,所以我这样做:

$.ajax( {
    url: 'http://localhost:8080/resourceserver/protected-no-scope',
    type: 'GET',
    beforeSend : function( xhr ) {
        xhr.setRequestHeader( "Authorization", "Bearer " + token );
    },
    success: function( response ) {
        console.log(response);
    }
Run Code Online (Sandbox Code Playgroud)

我的端点在 SpringBoot 容器下运行,所以我正在获取 HttpServletRequest 并尝试获取 AUthorization Header 但始终为空:

static Authentication getAuthentication(HttpServletRequest request) {
        String token = request.getHeader(HEADER_STRING);
        //token is always null
...
Run Code Online (Sandbox Code Playgroud)

编辑 1 这是客户端(浏览器

OPTIONS http://localhost:8080/resourceserver/protected-no-scope 403 ()
Failed to load http://localhost:8080/resourceserver/protected-no-scope: Response for preflight has invalid HTTP status code 403.
Run Code Online (Sandbox Code Playgroud)

编辑 2 要在后端启用 CORS,我在 spring 中使用以下注释: …

javascript jquery jwt

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

Flyway 找不到类路径:db/migrations

我现在刚刚在 Intellij 中开始了一个新项目,使用 Spring Boot ver 2.1.3 和 Flyway 5.2.4 和 Java 11。

尝试开始我的项目后,我得到了:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception; nested exception is java.lang.IllegalStateException: Cannot find migrations location in: [classpath:db/migration] (please add migrations or check your Flyway configuration)
Run Code Online (Sandbox Code Playgroud)

我有以下文件夹:

在此处输入图片说明

如您所见,我有“db/migration”但没有任何迁移,我现在才开始。调试 FlywayAutoConfiguration 类,我得到以下信息:

在此处输入图片说明

因此,我尝试返回“类路径:”中的所有文件,请参阅:

在此处输入图片说明

请注意,我只有“application.properties”文件。

java flyway java-11

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

OAuth2.0 和 OpenID Connect 令人困惑

我对使用 OAuth 2.0 作为授权方法和使用 OpenID Connect 作为身份验证方法感到困惑。

据我所知,OAuth 2.0只是一种授权方法。换句话说,这是请求 ACCESS_TOKEN 并接收此 ACCESS_TOKEN 的过程,如下图黄色椭圆所示:(简化)

在此输入图像描述

在 OAuth 2.0 客户端从授权服务器检索 ACCESS_TOKEN 之前,该服务器应验证用户是否允许,这是 OAuth 2.0 不关心的身份验证过程。

当 OpenID Connect 包含在混合中时,它也允许使用身份验证方法,但据我所知,OpenID Connect 只是在 JWT 令牌中添加一个“声明”,该令牌保存有关正在使用该服务的用户的信息,例如:电子邮件、姓名和其他的。

我的问题是:

  1. 为什么不忽略 OpenID Connect 并在 OAuth 2.0 中添加更多“声明”来获取有关用户的信息?
  2. 我对流程的描述正确吗?

oauth-2.0 openid-connect

7
推荐指数
3
解决办法
6164
查看次数

使用提供的依赖与继承

我有一个名为"A"的JAR项目,它有一些将由wildfly 10提供的库:

 <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.core.version}</version>
            <scope>provided</scope>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

我有另一个名为"B"的项目,它是一个WAR项目.第二个项目不应该再次插入hibernate依赖项,但如果我不这样做,我就不能使用@Entity和其他类.我应该再次提供项目"B"中的"重新导入"hibernate-core.有没有办法从项目"A"继承它?

maven

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

未找到 Python 模块,但该模块存在于文件夹中

我正在尝试执行一个简单的 PY 文件,但收到以下错误:

Traceback (most recent call last):
  File "docker_pull.py", line 8, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'
Run Code Online (Sandbox Code Playgroud)

查看 Python 安装文件夹,我在以下位置找到了 requests 模块: C:\Program Files (x86)\Python 3.7.1\Lib\site-packages\pip\_vendor\requests。如何强制 Python 使用已安装的模块?

PS:我的这台机器没有互联网连接。

python

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

Nginx请求Kubernetes中的两个或更多节点

我想了解kubernetes背后的一些概念,所以我有以下几点:

  1. 具有2个节点的kubernetes集群
  2. 部署nginx有2个副本,所以我有2个POD.
  3. 在端口32134上公开nginx的服务,所以我可以访问每个节点:

    http:// node01:32134http:// node02:32134

那么,让我们怀疑:

  1. 做一个kubectl describe pod nginx-001我在node01下运行这个pod .对pod nginx-002执行相同的命令我也在node01下运行了这个pod .那么,如果我的pod只在一个节点下运行,我怎么能在两个URL(node01和node02)中获得HTTP 200?Node02不应该响应,因为没有运行任何nginx,对吧?

  2. 看着kubctl logs -f nginx-001我得到了所有访问请求的日志.奇怪的是:无论如果我点击http://node01或者http://node02我总是在nginx-001 POD中获取日志,其他pod(nginx-002)永远不会在日志中获取请求.好像ks8总是将所有请求重定向到nginx-001而忘记了另一个pod.

重要提示 我正在使用Digital Ocean Kubernetes服务

kubernetes

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

f:setPropertyActionListener始终设置为null

我正在尝试使用当前迭代<p:dataTable var>作为托管bean的属性<f:setPropertyActionListener>.但是,它始终设置为null.

观点dentistas.xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"  
    xmlns:ui="http://java.sun.com/jsf/facelets"  
    xmlns:p="http://primefaces.org/ui">  

<h:head>  

</h:head>  
<h:body>  
    <ui:composition template="/templates/template.xhtml">  

        <ui:define name="content">  
            <h:form id="formDentistas">  

                <p:growl autoUpdate="true" />  

                <p:commandButton icon="ui-icon-plus" value="Cadastrar"  
                    id="cadastrar" oncomplete="dialogCadastrar.show()" />  


                <p:dataTable var="dentista" value="#{dentistaMB.dentistas}"  
                    paginator="true" emptyMessage="Não foi encontrado nenhum registro"  
                    rows="10" id="dataTableDentistas">  

                    <f:facet name="header">Lista de Dentistas</f:facet>  
                    <p:column headerText="Nome" sortBy="nome" filterBy="nome" id="nome"  
                        width="200px">  
                    #{dentista.pessoaFisica.nome}  
                </p:column>  

                    <p:column headerText="Data Nascimento" sortBy="dataNascimento"  
                        filterBy="dataNascimento" id="dataNascimento" width="60px">  
                    #{dentista.pessoaFisica.dataNascimento}  
                </p:column>  

                    <p:column headerText="CRO" sortBy="cro" filterBy="cro" id="cro" …
Run Code Online (Sandbox Code Playgroud)

jsf facelets

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

Postgres 无法侦听特定 IP 地址

我试图阻止访问我的 PostgreSQL 并只允许访问本地主机和我的机器外部 IP,例如:“172.211.xx.xx”。该 IP 由我的 ISP(Internet 服务提供商)提供。

postgresql.conf我设置以下行:

listen_addresses = '179.211.xx.xx'
Run Code Online (Sandbox Code Playgroud)

但是我无法从我的机器连接到数据库。我得到“服务器不听”。如果我改为:

 listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)

一切正常,但我做不到。我只需要启用对这个 IP 的访问。这是我的项目的安全要求。

我的pg_hba.conf

host    all             all             0.0.0.0/0            md5
Run Code Online (Sandbox Code Playgroud)

postgresql

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

使用自定义端口和地址配置Eureka Server和客户端

我有一个Eureka Server在默认的localhost主机和端口8761上运行,因此我尝试通过以下方式更改此默认配置:

server:
  port: 6000
  servlet:
    context-path: /myeureka
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
Run Code Online (Sandbox Code Playgroud)

但是以这种方式,仅使用默认配置就无法访问eureka仪表板:

server:
  port: 8761
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
Run Code Online (Sandbox Code Playgroud)

在我的客户端中,同样的事情发生了,我无法指向不同于默认值的另一个eureka服务器(localhost:8761),请参阅我的配置:

server:
  port: 7000
  servlet:
    context-path: /client-eureka
spring:
  application:
    name: client-eureka
eureka:
  instance:
    prefer-ip-address: true
  client:
    eureka-server-port: 6000
    eureka-server-u-r-l-context: /myeureka
Run Code Online (Sandbox Code Playgroud)

在客户端日志中查找,我得到以下信息:

2018-09-01 09:19:37.175  INFO 4931 --- [           main] c.n.eureka.cluster.PeerEurekaNodes       : Replica node URL:  http://localhost:8761/eureka/
Run Code Online (Sandbox Code Playgroud)

无论我在客户端中配置什么端口或主机,都应始终尝试达到默认值。

重要提示:我正在此版本中使用eureka:https : //mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-server/2.0.1.RELEASE

spring-cloud netflix-eureka

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

gitlab-ci.yml 忽略私有运行器中的 docker 镜像

好吧,我在我的 Digital Ocean VPS 中创建了一个私人跑步者。这个私人跑步者正在使用shell executor,这是我的 gitlab-ci.yml 文件:

variables:
  VERSION_NAME: ${CI_COMMIT_REF_NAME}-${CI_CONCURRENT_ID}

before_script:
  - docker info

stages:
  - test
  - build
  - deploy
  - delivery

test_project:
  tags: 
    - safepark
  stage: test
  image: mcr.microsoft.com/dotnet/core/sdk:2.1
  script:
    - dotnet test

build_image:
  tags: 
    - safepark
  only:
    - master
  stage: build
  script:
    - docker build -f WebApi/Dockerfile -t myuser/myimage
    - docker tag -t myuser/myimage myuser/myimage:${VERSION_NAME}

push_image:
  tags: 
    - safepark
  only:
    - master
  stage: deploy
  script:
    - docker push myuser/myimage
    - docker push myuser/myimage:${VERSION_NAME}
Run Code Online (Sandbox Code Playgroud)

但在“测试”阶段,图像永远不会被拉出,我得到“dotnet …

gitlab gitlab-ci gitlab-ci-runner

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

HTTP nginx 到 HTTPS proxy_pass 返回 504 BAD 网关

我正在尝试创建一个 https 地址的 proxy_pass (我的 nginx 使用纯 HTTP 协议在 80 下运行)。

这是我在conf文件中的声明:

   location /viacep/ {
                  proxy_pass https://viacep.com.br/;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header Host $host;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
Run Code Online (Sandbox Code Playgroud)

好吧,这个想法是,当我输入时,localhost/viacep/ws/09340400/json我在引擎盖下得到了以下地址解析: https: //viacep.com.br/ws/09340400/json。但我在 error.log 文件中收到以下错误:

2021/12/28 09:32:59 [error] 34664#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: , request: "GET /viacep/ws/09540400/json HTTP/1.1", upstream: "https://165.227.126.241:443/ws/09540400/json", host: "localhost"
Run Code Online (Sandbox Code Playgroud)

我想这个错误是由于地址解析(https://165.227.126.241:443/ws/09540400/json)而发生的,使用IP而不是DNS查看它。

编辑1

我尝试添加proxy_ssl_server_name on;但同样的错误。

nginx nginx-reverse-proxy

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

构建 Dockerfile 时,AzureDevops 找不到 csproj 文件

我正在尝试在 AzureDevops 中创建一个管道,所以我有以下Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.1-stretch AS build
WORKDIR /src
COPY ["WebApi/WebApi.csproj", "WebApi/"]
RUN dotnet restore "WebApi/WebApi.csproj"
COPY . .
WORKDIR "/src/WebApi"
RUN dotnet build "WebApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApi.dll"]
Run Code Online (Sandbox Code Playgroud)

当我尝试运行我的管道时,出现以下错误:

Step 7/17 : COPY ["WebApi/WebApi.csproj", "WebApi/"]
COPY failed: stat /var/lib/docker/tmp/docker-builder651276881/WebApi/WebApi.csproj: no such file …
Run Code Online (Sandbox Code Playgroud)

docker azure-devops

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