2015-07-12 46 views
1

我正在使用RESTEasy在Wildfly 8.2中构建REST服务。这基本上工作,但它不是UTF-8。如何强制RESTEasy(Wildfly 8.2)使用UTF8?

我的配置是这样的: wildfly encoding

我用的是自动JAXRS激活Wildfly由一代导致的RESTEasy来解决这个空类:

@ApplicationPath("/rest") 
public class JaxRsActivator extends Application 
{ 
} 

我的REST实现是这样的:

@Path("/user") 
@Produces(MediaType.APPLICATION_JSON) 
public class UserResource 
{ 
    @GET 
    @Path("/{firstname}-{lastname}") 
    public Response printMessage(@PathParam("firstname") String param1, @PathParam("lastname") String param2) 
    { 
     return Response.ok().entity(new TestObject(param1, param2)).build(); 
    } 
} 

当我通过

调用此资源
http://localhost:8080/mywebserver/rest/user/Déborah-François 

我得到结果:

{"name1":"Déborah","name2":"François"} 

交付的编码为Windows-1252。这是为什么?我想要在Wildfly上配置UTF-8。

[更新]
当我添加到的jboss-web.xml中这一点,甚至不工作:

<default-encoding>UTF-8</default-encoding> 

(我不明白为什么UTF-8是不是默认在所有。在我看来这是必须的)

+0

引用为什么UTF-8不是默认值。 AFAIK没有规定为URI使用UTF-8的标准。常用的方法是使用ISO-8859-1并对所有不适合此字符集的字符进行网址编码。 – lefloh

+0

我试图在jboss-web.xml和standalone.xml中设置''作为[描述在这里](https://issues.jboss.org/browse/WFLY-2533? focusedCommentId = 12933050&page = com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12933050)但无效果。我用Wildfly 8.1.0.Final试了一下。也许你可以尝试修复版本(8.0.0.CR1),看看它是否有效? – lefloh

+0

@lefloh当我创建一个测试客户端并向我的服务器发送UTF-8请求时,编码在响应输出上工作。 – Bevor

回答

1

浏览器/ HTTP客户端发送的URL显然是UTF-8,但它并没有这样说。因此使用HTTP默认编码ISO-8859-1。

在JBoss中一个独立的服务器可能在standalone.xml被配置为:

<system-properties> 
    <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/> 
    <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" 
     value="true"/> 
</system-properties> 
+0

不幸的是,这是行不通的。同样的结果,编码保持windows-1252。我在管理控制台中进行配置,以确保不会将其放置在standalone.xml中的错误位置 – Bevor

+2

Wildfly正在使用Undertow,因此设置Tomcat属性不再有效。 – lefloh

+0

这是针对jboss的7,wildfly不再使用apache catalina。 – caarlos0

0

的问题也许不存在。我会解释一下,我有以下情况:

当我在localhost(wildfly 8.x)上测试一个窗体时,它不起作用,显示和写入都会破坏字符。但是,当我从相同的源代码构建一个project.war并发送到测试服务器时,一切正常。

我测试了任何可以使用的语言,包括中文,乌克兰语(西里尔文),希腊语,从左到右和从右到左的语言,即使是在同一个单词中也是如此。

尝试测试您的项目在测试服务器上发送.war。

+0

目前我不再有这个问题了,因为我没有用例来传递这些参数。我将整个对象传递给端点。这些对象本身包含任何语言的属性。它似乎返回正确的值作为响应,并将正确的编码存储到数据库中。 – Bevor

相关问题