在OpenShift JBoss AS 7中更改URIEncoding - java

我正在使用OpenId模块使用Spring Security构建一个测试应用程序。我还使用jQuery OpenId plugin支持某些提供程序。

我正在使用Tomcat(版本7)测试该应用程序,经过一些故障排除后,我发现我需要为服务器指定URI编码,以支持凭据已倾斜字母和元音的用户,例如佩尼亚斯科,Ángel等

在Tomcat中,我只需要将此设置为tomcat-server.xml文件:

<Connector URIEncoding="UTF-8" SSLEnabled="true" .../>

但是该应用程序已部署在OpenShift PaaS的JBoss AS 7磁带中。

在这种情况下,如何放置模拟配置?

编辑:

我添加了具有以下内容的文件.openshift / action_hooks / pre_start_jbossas-7

#!/bin/bash

# Need to set URI encoding to UTF-8 because of Spring Security OpenID module needs it for tilded letters e.g. ñ, Á

export JAVA_OPTS=" -Dorg.apache.catalina.connector.URI_ENCODING=\"UTF-8\" -Dorg.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING=true"

但是它不能远程工作,我在本地服务器上使用了相同的选项,并且不工作。

参考方案

在JBoss AS7中,可以使用系统属性配置此功能:

-Dorg.apache.catalina.connector.URI_ENCODING="UTF-8"
-Dorg.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING="true"

有关参考,请参见:https://community.jboss.org/message/643825#643825

您也可以在<system-properties>standalone.xml部分中进行设置,但是在OpenShift上,此文件不受您的应用程序控制。对于OpenShift应用程序,您需要通过在应用程序的启动前挂钩中设置JAVA_OPTS来使用这些选项启动JBoss。为此,将以下内容添加到.openshift/action-hooks/pre_start_jbossas-7文件:

export JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.connector.URI_ENCODING=\"UTF-8\" \
                  -Dorg.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING=\"true\""

希望这可以帮助。如果您遇到问题,请发表评论。

JBoss AS 7自动部署插件无法连接到本地主机:8080 - java

我已经在maven中配置了插件,如下所示:<plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>7.0.2.Final</ve…

如何合并同一大型项目的2版本 - java

因此,我负责从Java 1.5到Java 1.8的迁移。首先,我们更改了编译器(从Ant到Maven),然后我们重新格式化了许多代码。我们还删除了Seam框架,这花费了我们很多时间。在这里好。问题是其他同事继续在1.5版中工作,现在我需要进行所有这些更改。这包括新的实体,程序包,数据,Hibernate配置,甚至是数据库模式的更改。问题是,如何在没有永恒的头…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…