我有两台服务器正在侦听负载均衡器后面的TCP端口.负载均衡器可以检测来自客户端的TCP连接尝试是否失败,并在不删除该连接的情况下将其重试到第二个服务器.我希望能够在不丢弃单个客户端集合的情况下将这两个服务器中的任何一个用于维护.
我的服务器使用此代码处理客户端请求:
ServerSocketFactory ssf = ...
ServerSocket serverSocket = ssf.createServerSocket(60000);
try {
while (true) {
Socket socket = serverSocket.accept();
...// Do the processing
}
} catch (IOException e) {
...
}
...
Run Code Online (Sandbox Code Playgroud)
我最初的想法是添加一个布尔值,该布尔值将在应用程序关闭时设置,并serverSocket.accept()
在等待处理和关闭所有现有连接时阻止新调用.但是,即使在serverSocket.accept()
通话之前,也正在建立新的连接.这是我在Wireshark中看到的,如果我在该调用之前放置一个断点.
问题就在于,一旦我打电话
serverSocket.close()
,所有这些客户端连接都会被丢弃.我想要实现的是告诉ServerSocket停止接受所有新连接(即只为新连接发送RST或让它们超时)的一些方法,因此负载均衡器可以将它们重新路由到另一台服务器,但同时不会掉线任何已经建立的联系.
编辑:我正在寻找一些自动解决方案,每次我想更新应用程序时都不需要我更改任何负载均衡器或操作系统设置.
我知道关于这个警告已经有很多问题,但我的问题有点不同.我知道我可以使用此配置pom.xml
来修复它
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
这消除了警告,但前提是我在Eclipse中安装并配置了Java 7.例如,如果我只有Java 8,我仍然会看到警告,除非我将上面配置中的版本更改为1.8:
构建路径指定执行环境JavaSE-1.7.工作区中没有安装与此环境严格兼容的JRE.
我的项目与Java 7,8,9和10兼容.我想要实现的是,如果安装了任何这些版本的Java而没有更改我的版本pom.xml
以匹配当前安装的Java版本,则要避免此警告.告诉Eclipse Java 7或其他任何东西都是好的.
该项目仍然可以通过警告进行编译和工作,它只是让人分心,因为它标记了项目有问题.我知道我可以在Eclipse设置中隐藏这种类型的警告,但有没有办法通过仅使用一些配置来摆脱它pom.xml
?
我正在使用 Maven Javadoc 插件,如下所示
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我安装了多个 JDK 版本,并且希望能够使用其中任何一个版本构建项目。上面的配置在 Java 8 上工作正常,但在 Java 11 上失败并出现以下错误
无法在项目上执行目标 org.apache.maven.plugins:maven-javadoc-plugin:3.1.1:jar (attach-javadocs) ...: MavenReportException: 生成 Javadoc 时出错: 无法找到 javadoc 命令: 环境变量JAVA_HOME 设置不正确。
显而易见的解决方案是设置 JAVA_HOME。但正如我提到的,我有多个版本的 JDK,因此每次我想使用另一个版本时都重新配置 JAVA_HOME 一点也不方便。
另一个解决方案(来自Unable to find javadoc command - maven)是将以下配置添加到插件中:
<configuration>
<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这使得它可以与 Java 11 一起使用,但会破坏 Java 8,因为javadoc
位置就${java.home}/../bin/javadoc
在这种情况下。
理想情况下,我总是想从 Maven 使用的 java 可执行文件所在的目录中使用javadoc
,但我还没有找到使用 Maven Javadoc 插件来实现这一点的方法。
升级到Spring Security 3.2.0.RC1后,我收到警告"方法'setFilterProcessesUrl' <http auto-config="true">
在我的xml配置中被标记为已弃用" .即使是非常简单的配置,我也会收到此警告:
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<http auto-config="true">
<intercept-url pattern="/myurl*" access="ROLE_USER" />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="user1" password="12345" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
Run Code Online (Sandbox Code Playgroud)
根据Spring Security 3.2 API文档 ,不推荐使用setFilterProcessesUrl,而应使用setRequiresAuthenticationRequestMatcher(RequestMatcher).如何更改此基本XML配置,因此它不使用已弃用的方法?我正在使用带有Spring Tool Suite插件的Eclipse Kepler.
更新:
如果我删除<http auto-config="true">
并添加<form-login />
到http元素
<http>
<intercept-url pattern="/myurl*" access="ROLE_USER" />
<form-login />
</http>
Run Code Online (Sandbox Code Playgroud)
我也得到"方法'setFilterProcessesUrl'被标记为已弃用"警告,如果我添加,<logout />
我第二次得到相同的警告.在另一方面,如果我更换<form-login />
,并<logout />
用<http-basic />
警告消失.
我有一个内联div
,我需要默认隐藏,然后使用jQuery show()
和hide()
函数.
我试过这个,但它不起作用:
div.mydiv { display: inline none; }
Run Code Online (Sandbox Code Playgroud)
如果我删除none
并只使用jQuery的hide()
功能,它的工作原理.但是这样,在加载页面并执行JavaScript代码之前,元素不会被隐藏.
编辑
我里面有其他块元素div
,所以我无法使用span
.
我需要从我的项目的Java 8的sun。*软件包中访问某些类的源代码。我在https://download.java.net/openjdk/jdk8/上找到它,但该链接适用于OpenJDK 8u0。我还从Googling 找到了指向8u40的链接(http://download.java.net/openjdk/jdk8u40/ri/openjdk-8u40-src-b25-10_feb_2015.zip),但是我找不到Java上的任何页面。引用它的网。如何从java.net或至少比8u40更新的东西中找到指向最新稳定的OpenJDK 8版本(8u192)源代码的链接?
请注意以下事项: