我在将Web应用程序响应中的字符集从ISO-8859-1(默认)更改为UTF-8时遇到问题.我已经将VM选项添加-Dfile.encoding=UTF-8
到JVM选项中
但是,我确实得到以下HTTP标头作为来自glassfish的响应:
Content-Type: [...;charset=ISO-8859-1]
Server: [GlassFish Server Open Source Edition 3.1]
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助/想法.
我想使用play 2.1框架附带的Json库.但我坚持将json对象反序列化为java List.
有了gson,你可以写s.th. 喜欢
Type type = new TypeToken<List<XYZ>>(){}.getType();
List<XYZ> xyzList = gson.fromJson(jsonXyz, type);
Run Code Online (Sandbox Code Playgroud)
有没有办法用play.libs.Json.fromJson做同样的事情?
任何帮助赞赏.
编辑(17.12.2013):
我做了以下工作来解决这个问题.我想有更好的方法,但我没有找到它.
List<MyObject> response = new ArrayList<MyObject>();
Promise<WS.Response> result = WS.url(Configuration.getRestPrefix() + "myObjects").get();
WS.Response res = result.get();
JsonNode json = res.asJson();
if (json != null) {
for (JsonNode jsonNode : json) {
if (jsonNode.isArray()) {
for (JsonNode jsonNodeInner : jsonNode) {
MyObject mobj = Json.fromJson(jsonNodeInner, MyObject.class);
response.add(bst);
}
} else {
MyObject mobj = Json.fromJson(jsonNode, MyObject.class);
response.add(bst);
}
}
}
return response;
Run Code Online (Sandbox Code Playgroud) 使用Glassfish 3.1.2取消部署和部署WebArchive(.war)时,我会产生奇怪的效果.
$ asadmin undeploy myWebApp; asadmin deploy target/myWebApp.war
Run Code Online (Sandbox Code Playgroud)
它正常部署,但是当我通过实体管理器获取实体bean时,它会抛出异常:
[#|2012-12-11T15:26:09.772+0100|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=119;_ThreadName=Thread-2;|java.lang.ClassCastException: org.YourEntity cannot be cast to org.YourEntity
q.getSingleResult()调用中抛出异常.
@PersistenceContext(unitName = "org.my-PU")
private EntityManager em = Persistence.createEntityManagerFactory("org.my-PU").createEntityManager();
...
public YourEntity findYourEntity() throws Exception {
TypedQuery<YourEntity> q = em.createQuery("select ye from YourEntity ye",
YourEntity.class);
return q.getSingleResult();
}
Run Code Online (Sandbox Code Playgroud)
我在项目中使用以下JPA相关的依赖项:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.7.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
当我重新启动glassfish时,不再发生异常.在取消部署/部署具有类似设置的.ear时,我从未见过这个问题.有没有人看到错误,知道如何克服它?这不是一个大问题,但很烦人.
我有一个Web服务,其定义位于wsdl文件中,模式位于外部xsd文件中.
在xsd文件中,有schema标记,它提供了一个属性'version',我可以用它来记录当前版本.wsdl格式(WSDL 1.1)中有类似的东西吗?如果没有,为了记录目的,存储通用版本属性的最佳位置是什么?
请记住,我不想实现向后兼容性,如http://blogs.iona.com/sos/20070410-WSDL-Versioning-Best-Practise.pdf中所述.我只想记录wsdl中的版本.
我开始使用WSDL并使用wsimport生成Java artificats.然后我实现了WebService并将其部署到glassfish 3.1.glassfish获取java元素并从这些元素中重新生成wsdl.
我可以说服glassfish将原始的wsdl发布到世界上,而不是"重新设计"的那些吗?谢谢!
glassfish ×2
glassfish-3 ×2
web-services ×2
wsdl ×2
eclipselink ×1
java ×1
jax-ws ×1
jpa ×1
json ×1
oracle11g ×1
servlets ×1
utf-8 ×1
version ×1
xml ×1
xsd ×1