在我的应用程序中,我使用自动连接User到我的服务的bean,MyService并将其用作登录用户信息的原则(因此用户不是从xml作为静态bean而是从登录用户动态生成)如果有登录的十个用户我将有十个该@AutoWired User领域的候选人.(对吗?)我可以在Spring容器中找到其中任何一个cos AutoWired,而不是会话.
告诉我,如果我错了.以及如果可能的话如何实际解决它.但是如果我的AutoWired字段被注释了怎么办呢@Scope ("Session")
像这样 :
@Component("user")
@Scope("session")
public class User
{
String userid;
String name;
//getter setters etc
}
Run Code Online (Sandbox Code Playgroud)
@Component
public class MyService
{
@Autowired
private User user;
}
Run Code Online (Sandbox Code Playgroud)
当我调用MyServiceComponent 时,是否可以获取其他用户的User bean .Cos MyService只是@Component即使它User是@Scope(session).
基本上,(如果我的假设是错的)我认为当你@Autowire是一个字段时,它会将容器视为整体并且容器不会被分成每个会话的子容器.
来自: Elasticsearch在崩溃后无法恢复 并从SonarQube删除项目
我删除了一个项目,然后去了cli并重新启动,现在它用以下方式进行了调整:
2015.05.08 15:10:57 INFO es[o.s.p.ProcessEntryPoint] Starting search
2015.05.08 15:10:57 INFO es[o.s.s.SearchServer] Starting Elasticsearch[sonarqube] on port 9001
2015.05.08 15:10:58 INFO es[o.elasticsearch.node] [sonar-1431061857323] version[1.4.4], pid[6991], build[c88f77f/2015-02-19T13:05:36Z]
2015.05.08 15:10:58 INFO es[o.elasticsearch.node] [sonar-1431061857323] initializing ...
2015.05.08 15:10:58 INFO es[o.e.plugins] [sonar-1431061857323] loaded [], sites []
2015.05.08 15:10:59 INFO es[o.elasticsearch.node] [sonar-1431061857323] initialized
2015.05.08 15:10:59 INFO es[o.elasticsearch.node] [sonar-1431061857323] starting ...
2015.05.08 15:11:00 INFO es[o.e.transport] [sonar-1431061857323] bound_address {inet[/0.0.0.0:9001]}, publish_address {inet[/192.168.78.76:9001]}
2015.05.08 15:11:00 INFO es[o.e.discovery] [sonar-1431061857323] sonarqube/KkVXWlQCRLGbdSgJZT90uA
2015.05.08 15:11:03 INFO es[o.e.cluster.service] [sonar-1431061857323] new_master [sonar-1431061857323][KkVXWlQCRLGbdSgJZT90uA][java-ci.gbst.net][inet[/192.168.78.76:9001]]{rack_id=sonar-1431061857323}, reason: …Run Code Online (Sandbox Code Playgroud) 我在测试期间经历了Spring Boot 使用 /tmp/spring.log 文件
但这没有帮助。我的 spring 启动应用程序中有一个 logback.xml,当我启动它时,它会在 var/tmp/spring.log 中创建一个日志。现在这不能在客户端站点上工作。有没有办法将它配置为不创建它,我的日志已经将控制台记录在我在 appender 中定义的日志文件中。我什至不知道这正在发生。并且此 spring.log 与滚动文件附加程序一起使用,这意味着它将每天继续创建日志。
我删除了:
<!--include resource="org/springframework/boot/logging/logback/base.xml"/-->
Run Code Online (Sandbox Code Playgroud)
从我的 logback.xml 但它仍然没有阻止它访问文件或创建它
任何帮助将不胜感激
编辑:我的 logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/fix.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>90</maxHistory>
</rollingPolicy>
<encoder>
<charset>utf-8</charset>
<Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern>
</encoder>
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<queueSize>512</queueSize>
<appender-ref ref="FILE"/>
</appender>
<logger name="com.comp.myapp" level="INFO"/>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<root level="INFO">
<appender-ref ref="FILE" />
<!--<appender-ref ref="CONSOLE"/>-->
</root>
Run Code Online (Sandbox Code Playgroud)
由此产生的问题是,如果我使用相同的用户部署两次相同的应用程序。两个应用程序都在写入同一个文件,这是没有意义的。如果我在同一台机器上也部署了另一个 Spring Boot 应用程序,它们将写入 tmp 文件夹中的同一个 spring.log。我不明白创建“偷偷摸摸”日志背后的原因是什么(我称之为偷偷摸摸)
我正在运行一个 spring boot 应用程序,它是一个 web 服务客户端,并向 Jboss 上的 web 服务发送请求。
在 jboss 上添加了一个证书,从那时起我开始出现异常:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
Run Code Online (Sandbox Code Playgroud)
所以我在谷歌上搜索了如何与基于证书的 Jboss 进行通信,并提出了我需要从 jboss 证书创建一个信任存储然后在我的 application.yaml 中使用它的想法
server:
port: 7887
address: 127.0.0.1
ssl:
# enabled: true
trust-store: file:config/myapp.truststore
trust-store-password: myappdomain
Run Code Online (Sandbox Code Playgroud)
这些没有用。所以我使用了更多的手册和基于理由的方法
我只是做了下面的事情,这奏效了。(对于任何有相同问题的人,这都有效;我在 config 目录中添加了 truststore,并且 config 目录与 myapp.jar 处于同一级别)
java -Djavax.net.ssl.trustStore=config/myapp.truststore -jar myapp.jar
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么 application.yaml 配置不起作用。我是不是错过了什么。
上述方法无需密码即可工作(可能是因为 jboss 中的密钥库和证书上的密码与信任库密码相同)。
有效的方法是否存在任何安全问题或任何类型的问题。以及将来如何使 yaml 配置工作。
我正在努力建立一个战争项目.并在编译它给我这个错误:
[编译:编译]将432个源文件编译为C:\ Beta\ECORP5\ECORP5-web\target\classes -------------------------- -----------------------------------编译错误:------------ -------------------------------------------------\Beta\fin\fin-web\src\main\java\com\comp\fin\utils\Formatter.java:[23,-1]无法访问javax.annotation.PostConstruct坏类文件:C:\ Beta\fin\fin-web\target\endorsed\javaee-endorsed-api-6.0.jar(javax/annotation/PostConstruct.class)类文件有错误的版本50.0,应该是49.0 1错误
我无法摆脱这个错误.我正在使用java 6和jdk 1.5这里是我的POM.xml或其中的一部分没有不相关的东西:
> <**?**xml version="1.0" encoding="UTF-8"?**> <**project
> xmlns="http://maven.apache.org/POM/4.0.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/xsd/maven-4.0.0.xsd"**>
>
><*modelVersion>4.0.0<*/modelVersion>
> <*parent>
> <*artifactId>fin<*/artifactId>
> <*groupId>com.comps<*/groupId>
> <*version>1.0-SNAPSHOT<*/version>
> <*/parent>
>
> <groupId>com.comps</groupId>
> <artifactId>fin-web</artifactId>
> <version>1.0-SNAPSHOT</version>
> <packaging>war</packaging>
>
> <name>fin-web</name>
>
> <properties>
> <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> </properties>
>
> <dependencies>
>
> <dependency>
> <groupId>javax</groupId>
> <artifactId>javaee-web-api</artifactId>
> **<version>6.0</version>**
> </dependency>
>
> </dependencies>
>
> <build>
> <plugins>
> …Run Code Online (Sandbox Code Playgroud) 我有一个bean,我有一个字段"CustAmount",它是双倍的,我尝试测试bean,我似乎不明白这一点:当我在我的本地机器上运行时,它在实例化时被初始化为0.0.当我在我的linux测试环境中运行相同的代码时,它仍然是null.由于检索到的数据存在差异,这意味着如果我将CustAmount作为null发送到我的后端,我会获得一些数据,但如果我将CustAmount发送为0.0,则查询将在0.0的基础上完成,并且不会向我发回任何内容.
如果代码相同,这怎么可能呢?有可能当我在java 1.5中编译新的MyBean()时,double保持为null并且在1.6中它被初始化为0.0.
我不知道这是在两个Java版本中发生的事情,但这是我最终的唯一区别.
谢谢你的任何提示.
添加代码段:
public class MyBean {
private double custAmount;
public void setCustAmount(double custAmount) {
this.custAmount = custAmount;
}
public double getCustAmount() {
return custAmount;
}
}
Run Code Online (Sandbox Code Playgroud)
而我只是这样做
MyBean mybean = new MyBean();
Run Code Online (Sandbox Code Playgroud)
它不是双人而是双人.赛义德..
java ×3
spring-boot ×2
annotations ×1
autowired ×1
double ×1
java-ee ×1
logging ×1
maven ×1
sonarqube ×1
spring ×1
ssl ×1
truststore ×1
war ×1