首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Glassfish v4 - java 7端口统一-错误-无法将http重定向到https

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

Stack Overflow用户
提问于 2014-08-04 23:18:00
回答 2查看 4K关注 0票数 2

我正在尝试使用glassfish 4的端口统一来将任何http请求重定向到https。我可以很容易地用V3做到这一点,但是我在glassfish v4 -Java1.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

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

执行上述所有命令时都不会出现错误。但是,当我尝试访问web时,它抛出异常,并且http地址无法启动- localhost:8080失败

Glassfish中的异常-

警告:在org.glassfish.grizzly.memory.HeapMemoryManager$TrimmableHeapBuffer执行过程中出现异常FilterChain :无法将org.glassfish.grizzly.memory.HeapMemoryManager$TrimmableHeapBuffer强制转换为org.glassfish.grizzly.config.portunif.HttpRedirectFilter.handleRead(HttpRedirectFilter.java:99) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) at org.glassfish.grizzly.filterchain的java.lang.ClassCastException.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)在org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) at org。glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) at org.glassfish.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?

EN

回答 2

Stack Overflow用户

发布于 2014-08-22 01:27:49

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

当我使用以下命令(尽管它看起来与您的命令非常相似)时,这在我的GlassFish 4.0中起作用:

代码语言:javascript
复制
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

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

票数 8
EN

Stack Overflow用户

发布于 2015-06-19 10:31:06

所以我不知道为什么,但当我使用协议名pu-protocol时,它不会正确配置,也不会显示在管理控制台的协议列表下。我所要做的就是为协议使用一个不同的名称,一切都工作得很好。我使用了名称portunif protocol,只要我运行命令创建它,它就会出现在Glassfish管理控制台的协议部分下,正如您所期望的那样。现在我已经让我的网站按照期望重定向到https!

我使用的命令:

代码语言:javascript
复制
asadmin create-protocol --securityenabled=false http-redirect
asadmin create-http-redirect --redirect-port 443 --secure-redirect true http-redirect
asadmin create-protocol --securityenabled=false portunif-protocol
asadmin create-protocol-filter --protocol http-redirect --classname org.glassfish.grizzly.config.portunif.HttpRedirectFilter redirect-filter
asadmin create-protocol-finder --protocol portunif-protocol --targetprotocol http-listener-2 --classname org.glassfish.grizzly.config.portunif.HttpProtocolFinder http-finder
asadmin create-protocol-finder --protocol portunif-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=portunif-protocol

希望这对其他遇到和我一样的问题的人有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25122025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档