例如,我有两个域(app1.com,app2.com)和两个耳朵(app1.ear,app2.ear).每个EAR文件都包含ejb.jar和web.war.此外,每个WAR都有上下文根:/ app1或/ app2.
所以,如果我开始WildFly我会对运行两个应用程序本地主机:8080/APP1和本地主机:8080/APP 2.
如何将app1.com绑定到localhost:8080/app1和app2.com到localhost:8080/app2?
据我了解,我应该在standalone.xml中修改Undertow子系统配置.我试过了:
<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<host name="app1.com" default-web-module="app1.ear/web.war"/>
<host name="app2.com" default-web-module="app2.ear/web.war"/>
</server>
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我有一个Undertow服务器,我正在运行默认值.我试图发送一个分块请求,当服务器接收块时,输入流服务器端永远不会达到-1状态并挂起.
我已经使用了Undertow服务器的默认值(我曾尝试增加线程数但仍然没有运气).
Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(new HttpHandler() {
@Override
public void handleRequest(final HttpServerExchange exchange) throws Exception {
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
exchange.getResponseSender().send("Hello World");
}
})
.setHandler(Handlers.routing().post("/xml", blockingHandler))
.build();
server.start();
Run Code Online (Sandbox Code Playgroud)
起初我试图使用普通的httpHandler,但是却引发了错误.
java.lang.IllegalStateException: UT000035: Cannot get stream as startBlocking has not been invoked
Run Code Online (Sandbox Code Playgroud)
经过一些研究后,我使用了Blockoverflow上的建议,然后使用了BlockingHandler.我不再收到上面的错误,但现在处理程序挂起.
这是处理程序的代码(为了清楚起见,我删除了异常处理):
HttpHandler httpHandler = new HttpHandler() {
@Override
public void handleRequest(HttpServerExchange exchange) throws Exception {
StringBuilder builder = new StringBuilder( );
try(InputStream inputStream = exchange.getInputStream()){
int line;
while( ( line = inputStream.read() ) != -1 ) { …Run Code Online (Sandbox Code Playgroud) 我是 Netty 和 undertow 的新手,试图理解为什么我们使用 netty 而不是 undertow,性能方面哪个更好用
在我的 SpringBoot 应用程序日志中,我看到以下警告:
UT026009: XNIO worker was not set on WebSocketDeploymentInfo, the default worker will be used
UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
Run Code Online (Sandbox Code Playgroud)
从谷歌搜索看来,它们可能与 Undertow 提出的改进建议有关,但似乎不可能实施。
有没有人对这些有任何进一步的说明,也许还有关于如何使日志消失的建议,因为应用程序运行得很好?
要使用 undertow 作为代理服务器来跟踪所有流量(调试目的所需),我目前正在使用如下代码片段:
Undertow.builder()
.addHttpListener(8080, null)
.setHandler(
Handlers.requestDump(
Handlers.proxyHandler(new SimpleProxyClientProvider(targeUri))
)
)
.build().start();
Run Code Online (Sandbox Code Playgroud)
这已经转储所有请求和响应标头。我正在寻找一种转储请求和响应主体的方法。关于如何与 ProxyHandler 结合实现这一点有什么想法吗?
我需要在 Docker 容器中运行 HTTP REST API(带有嵌入式 Undertow 服务器的 Spring Boot 应用程序),但是当我运行容器并使用基准加载它时,我的响应时间太长(<1000ms),但是当我运行我的刚刚从 IDE 运行的应用程序我在(<10ms)内收到响应,为什么我有这么大的差异?我的泊坞窗文件:
FROM openjdk:8-jdk-alpine
ADD run.sh run.sh
RUN chmod +x run.sh
ADD tmp/data/data.zip tmp/data/data.zip
ADD travels-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 80
CMD ["sh", "run.sh"]
Run Code Online (Sandbox Code Playgroud)
和 run.sh 从我运行应用程序的地方:
#!/bin/sh
echo "Unzipping data..."
mkdir -p /opt/
unzip -o /tmp/data/data.zip -d /opt/
echo "Starting server..."
java -Xmx3G -Xms3G -XX:+AggressiveOpts -server -Djava.security.egd=file:/dev/./urandom -jar app.jar --data.path=/opt/
Run Code Online (Sandbox Code Playgroud)
预先感谢您的帮助!
Encountered redirect_uri error in keycloak. Found same issue logged at JIRA KEYCLOAK-7237, just want to check any work around? Anyone can help? Thank you in advance.
2018-06-30 11:34:13,996 WARN [org.keycloak.events] (default task-8) type=LOGIN_ERROR, realmId=Victz, clientId=portal, userId=null, ipAddress=, error=invalid_redirect_uri, redirect_uri=https://www.example.com:0/home
I am using apache http reverse proxy running on centos7, wildly 10, keycloak 3.4.3. has also tried in below environment but same error.
Tried in wildly 10, wildly 11, jboss 7.1, Keycloak 3.4.3 as well as keycloak 4.0
Also …
我在几天前制作并投入生产的一个小网络应用程序中遇到了一些问题。当您访问应用程序并与其交互时,几分钟后就会立即崩溃(等待 SSL 握手的时间太长)。我使用 LetsEncrypt 证书。
问题似乎是 Undertow 在尝试使用SSLConduit.java类时阻塞了一些线程,这导致服务器的某些核心处于 100% 使用率。
服务器中的Java版本是:
openjdk version "11.0.2" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.2+7)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+7, mixed mode)
Run Code Online (Sandbox Code Playgroud)
SpringBoot版本是:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Run Code Online (Sandbox Code Playgroud)
application.properties 文件:
server.port=9002
server.ssl.key-store=keystore.jks
server.ssl.key-store-password=password
server.ssl.key-password=password
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/example_db
spring.datasource.username=example_user
spring.datasource.password=password_db
Run Code Online (Sandbox Code Playgroud)
下流版本是:
yourkit 正在告诉我们:
我尝试放置另一个证书,但问题仍然存在。我不想更改为另一个网络服务器(但如果问题仍然存在,我会的)。有可能解决这个问题吗?或者我必须更改应用程序服务器?
编辑:github中的相关PR: https: //github.com/undertow-io/undertow/pull/721和JIRA中的问题:https://issues.jboss.org/browse/UNDERTOW-1493
我的主要目标是设置 Undertow 的最大并发请求连接限制。
我尝试通过属性进行配置来设置它。但这不起作用。
我研究了如何限制每个请求的最大连接数,并发现以下内容:
为了限制 undertow 中的连接,有必要实现 RequestLimitHandler 和 RequestLimit。
“Request Limiting Handler 限制并发请求数量的处理程序。如果数量超过限制,请求将排队。如果队列已满,则请求将被拒绝。”
http://undertow.io/undertow-docs/undertow-docs-1.2.0/#built-in-handlers
Run Code Online (Sandbox Code Playgroud)
我已经尝试了下一个实现,但此处理程序不会限制请求,因为它不会返回错误 503 响应,而且我无法与 MVC 方法绑定。
1. Test case:
@Bean
public UndertowServletWebServerFactory myUndertowServletWebServerFactory() {
final UndertowServletWebServerFactory factory = new UndertowServletWebServerFactory();
final HandlerWrapper handlerWrapperLimit = new HandlerWrapper() {
@Override
public HttpHandler wrap(final HttpHandler handler) {
final int maximumConcurrentRequests = 1;
final int queueSize = 100;
final RequestLimit requestLimit = new RequestLimit(maximumConcurrentRequests,
queueSize);
final RequestLimitingHandler limitHandler = new RequestLimitingHandler(requestLimit,
new ResponseCodeHandler(
StatusCodes.OK));
return limitHandler; …Run Code Online (Sandbox Code Playgroud) 将环境从 更新到 后,Wildfly 13我们Wildfly 18.0.1经历了
A channel event listener threw an exception: java.lang.OutOfMemoryError: Direct buffer memory
at java.base/java.nio.Bits.reserveMemory(Bits.java:175)
at java.base/java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:118)
at java.base/java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:317)
at org.jboss.xnio@3.7.3.Final//org.xnio.BufferAllocator$2.allocate(BufferAllocator.java:57)
at org.jboss.xnio@3.7.3.Final//org.xnio.BufferAllocator$2.allocate(BufferAllocator.java:55)
at org.jboss.xnio@3.7.3.Final//org.xnio.ByteBufferSlicePool.allocateSlices(ByteBufferSlicePool.java:162)
at org.jboss.xnio@3.7.3.Final//org.xnio.ByteBufferSlicePool.allocate(ByteBufferSlicePool.java:149)
at io.undertow.core@2.0.27.Final//io.undertow.server.XnioByteBufferPool.allocate(XnioByteBufferPool.java:53)
at io.undertow.core@2.0.27.Final//io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:147)
at io.undertow.core@2.0.27.Final//io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:136)
at io.undertow.core@2.0.27.Final//io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:59)
at org.jboss.xnio@3.7.3.Final//org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
at org.jboss.xnio@3.7.3.Final//org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
at org.jboss.xnio.nio@3.7.3.Final//org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:89)
at org.jboss.xnio.nio@3.7.3.Final//org.xnio.nio.WorkerThread.run(WorkerThread.java:591)
Run Code Online (Sandbox Code Playgroud)
应用程序方面没有任何改变。我查看了缓冲池,似乎有些资源没有释放。我触发了几次手动 GC,但几乎什么也没发生。(正常运行时间2小时)
之前在旧配置中它看起来像这样(正常运行时间> 250小时):
现在我做了很多研究,我能找到的最接近的就是这篇关于 SO 的文章。然而,这是与 websockets 结合使用的,但没有使用websockets。我读了几篇(好)文章(1、2、3、4、5、6 )并观看了有关该主题的视频。我尝试了以下方法,但没有任何效果:
undertow ×10
java ×8
spring-boot ×5
wildfly ×3
docker ×1
http ×1
java-11 ×1
jboss ×1
keycloak ×1
netty ×1
ssl ×1
virtualhost ×1
wildfly-10 ×1
wildfly-11 ×1