XFire客户端调用Tuscany发布的WebService服务端接收不到参数解决方法
为了验证不同实现的客户端调用WebService都能成功,证明WebService平台无关性,
场景如下:
服务端WebService由Tuscany进行发布,客户端用XFire(插件生成XFire客户端代码)进行调用。
结果:
服务端接收不到参数,接收的参数为null,但是XFire客户端却能够接收到服务端返回的参数。
解决方法:
在XFire生成的接口中指定名字空间。
1.接收上指定@WebService指定名字空间targetNamespace="http://com.xxx.web.client.gen/"
2.在接口参数上@WebParam指定名字空间targetNamespace="http://com.xxx.web.client.gen/"
注:com.xxx.web.client.gen为此接口类所在的包名。
Maven工程上Absent Code attribute in method that is not native or abstract in class file解决方案。
在Maven工程上进行JUnit测试出现如下错误:
Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/persistence/CascadeType |
解决方案:
在pom.xml文件中添加jboss-javaee6依赖
<dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-6.0</artifactId> <version>2.0.0.Final</version> <type>pom</type> <scope>provided</scope> </dependency>
JapserReport导出PDF出现Could not load the following font错误的解决方案
年后,将年前的基于JasperReport封装的API移植到Maven工程上,问题不断,其中一个问题就是导出PDF过程中出现如下错误:
Could not load the following font : pdfFontName : STSong-Light pdfEncoding : UniGB-UCS2-H isPdfEmbedded : true
|
百度了好久没有找到答案,偶然想起之前也有解决相关iText的中文版本问题,请看这篇文章:http://cst.is-programmer.com/posts/18844.html
不过这次有点不同的就是,JasperReport4.5.0 使用的是iText2.1.7版本,分析包名是以com.lowagie开头,所以相应的iTextAsian也应该是com.lowagie.XXX的。
之前出现错误就是导出了其他版本的iTextAsian.jar(com.itextpdf.XXX)。
总之:iText和iTextAsian的包要配套起来就没问题了。
JasperReport导出PDF报表中文不显示问题
这两天,利用iReport和JasperReport做报表,发现在导出PDF的时候中文不显示,而导出HTML却显示正常,而相关的itext包也引入到项目中了。百度发现,在报表定义的时候要设置如下属性:
Font name: 宋体 (中文字体)
PDF font name: STSong-Light
PDF Encoding: UniGB-UCS2-H(Chinese Siplified)
PDF Embeded: true
如图:
设置后,问题解决。
Hibernate出现No data type for node: org.hibernate.hql.ast.tree.IdentNode可能原因之一
某日,单元测试逻辑,出现如下错误:
java.lang.IllegalStateException: No data type for node:org.hibernate.hql.ast.tree.IdentNode \-[IDENT] IdentNode: 'wfProcessInstance' |
找了大半天原因:
原理HQL中用了一个全角空格,该死的肉眼看不出来。因此笔记下..
另外,如何在MyEclipse中检测全角空格,方法如下:
在MyEclipse中选中如下功能:
检测代码中是否如下一个“句号”的字符串,,如果出现"句号",说明这是一个全角空格。
Oracle中char类型字段在Hibernate中SQL查询只返回一个字符 解决方法
场景如下:
使用char(2)的类型来标识某个类型,比如01,02,03...
结果使用Hibernate的SQL查询该字段只返回0,0,0...
跟踪发现,char类型映射出Java对象是Character,说明char在Java中只有两个字节(一个字符),因此只返回0
解决方法:
通过限定他的返回类型为String就行了,如下:
SQLQuery query = session.createSQLQuery(sql);
query.addScalar("列名",Hibernate.STRING);
即可解决.不过会导致对所查询的字段都要加上addScalar.
WebService报No operation found in the portType element错误
启动Jboss,报如下错误:
java.lang.RuntimeException: org.apache.axis2.AxisFault: No operation found in the portType element
只是增加了一个WebService的外壳(无方法),结果报如上错误,
看来WebService不允许部署无方法的接口。
解决方案:在接口中补上一个方法咯。如果该接口无用,可删除接口。
Panteho报表设计器输出PDF的中文不显示解决
在Penteho报表设计器中,拖动一个Label,然后根据API输出PDF文件,结果PDF文件中只显示英文部分,中文部分不显示。
研究许久,原来还要更改Label的属性。具体解决方案:
1.指定【style】的【encoding】为utf-8
2.还要修改【style】的【family】为“宋体”或者其他可识别字体。
如图:
JBPM4.3出现Session closed错误解决方法
项目组临近发布版本了,但由于运行过程中出现“Session closed”的错误,发布延迟了两天。
问题已经解决了,虽然不是我解决的,还是记录备忘下:
解决方法:
在EnvironmentFactory对象执行openEnvironment()后获取EnvironmentImpl对象,在操作完最后EnvironmentImpl需要close掉(通常放在finally块中执行)。
代码模版:
EnvironmentFactory environmentFactory = (EnvironmentFactory)processEngine; EnvironmentImpl env = null; try { env = environmentFactory.openEnvironment(); //...执行其他相关操作 } catch (Exception ex) { ex.printStackTrace(); } finally { //EnvironmentImpl需要close掉 if (env != null) env.close(); }
解析XML文件报错:Invalid byte 2 of 2-byte UTF-8 sequence解决方案
使用Dom4j对XML文件进行操作,出现如下异常:
java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
百度得之,是Xml文件的编码问题,解决方案如下:
把Xml文件用记事本打开, 然后【另存为】的时候选择 "编码 "为UTF-8保存,再进行读写操作即可。