Glassfish v4 - java 7 - 端口统一 - 错误 - 无法将http重定向到https

use*_*337 2 glassfish-4

我正在尝试使用glassfish 4的端口统一将任何http请求重定向到https.我很容易用V3做这个,但我遇到了glassfish v4 - Java 1.7的问题.

我在glassfish v4中执行的命令 -

asadmin create-protocol --securityenabled = false http-redirect asadmin create-protocol-filter --protocol http-redirect --classname org.glassfish.grizzly.config.portunif.HttpRedirectFilter redirect-filter

asadmin create-protocol --securityenabled = false pu-protocol asadmin create-protocol-finder --protocol pu-protocol --targetprotocol http-listener-2 --classname org.glassfish.grizzly.config.portunif.HttpProtocolFinder http-finder asadmin create-protocol-finder --protocol pu-protocol --targetprotocol http-redirect --classname org.glassfish.grizzly.config.portunif.HttpProtocolFinder http-redirect

set configs.config.server-config.network-config.network-listeners.network-listener.http-listener-1.protocol = pu-protocol

以上所有命令都可以正确执行.但是,当我尝试访问Web时,它会抛出异常并且http地址无法启动 - localhost:8080失败

Glassfish中的例外情况 -

警告:FilterChain执行java.lang.ClassCastException中的异常:org.glassfish.grizzly.memory.HeapMemoryManager $ TrimmableHeapBuffer不能转换到org.glassfish.grizzly.http.HttpContent在org.glassfish.grizzly.config.portunif.HttpRedirectFilter.handleRead (HttpRedirectFilter.java:99)维持在org.glassfish org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119)在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) .grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java) :114)org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231)at org.glassfish.grizzly.filterchain.ExecutorResolver $ 9 .execute(EXECUT orResolver.java:119)在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)在org.glassfish.grizzly .filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)在org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)在org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)在org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent在org.glassfish.grizzly.strategies.WorkerThreadIOStrategy(TCPNIOTransport.java:838)在org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113). run0(WorkerThreadIOStrategy.java:115)在org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access $ 100(WorkerThreadIOStrategy.java:55)在org.glassfish.grizzly.strategies.WorkerThreadIOStrategy $ WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)在org.gl assfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:564)at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:544)at java.lang.Thread.run(Thread. Java的:722)

如果可以解决这个问题,请欣赏它,还有其他方法可以将端口重定向从http转换为https吗?

jdi*_*i82 6

确保您的最后一个命令包含"asadmin",因为set是DOS命令.

当我使用以下命令时,这对我使用GlassFish 4.0(虽然它看起来与你的非常相似):

asadmin create-protocol --securityenabled=false http-redirect

asadmin create-http-redirect --redirect-port 8181 --secure-redirect true http-redirect

asadmin create-protocol --securityenabled=false pu-protocol

asadmin create-protocol-filter --protocol http-redirect --classname org.glassfish.grizzly.config.portunif.HttpRedirectFilter redirect-filter

asadmin create-protocol-finder --protocol pu-protocol --targetprotocol http-listener-2 --classname org.glassfish.grizzly.config.portunif.HttpProtocolFinder http-finder

asadmin create-protocol-finder --protocol pu-protocol --targetprotocol http-redirect --classname org.glassfish.grizzly.config.portunif.HttpProtocolFinder http-redirect

asadmin set configs.config.server-config.network-config.network-listeners.network-listener.http-listener-1.protocol=pu-protocol
Run Code Online (Sandbox Code Playgroud)

我注意到这会导致http-listener-1的HTTP选项卡(Configurations - > server-config - > Network Config - > Network Listeners - > http-listener-1 - > SSL选项卡)为no更长的显示.对我来说不是问题.