2008年11月7日
#
最近的一个项目又要用到webservice(axis),上次为了赶时间完成任务,简单的找了些例子然后就这样用了,还好项目里本来就有对象和xml之间转换的接口,所以要传的对象一律转换成xml,然后传字符串。
尝试了N久才搞定了传输属性不是基本数据类型的问题。简单帖个代码:
1.server-config.wsdd
<service name="sendUser" provider="java:RPC">
<!-- 发布特定的方法,多个方法用逗号隔开 -->
<parameter name="allowedMethods" value="getUserByUserId"/>
<parameter name="className" value="cn.gov.zjport.suzhou.webservice.GetUser4WebServiceImpl"/>
<beanMapping languageSpecificType="java:cn.gov.zjport.suzhou.domain.CustomUser" qname="ns:CustomUser" xmlns:ns="urn:GetUser4WebService"/>
<beanMapping languageSpecificType="java:cn.gov.zjport.suzhou.domain.CustomRole" qname="ns:CustomRole" xmlns:ns="urn:GetUser4WebService"/>
<beanMapping languageSpecificType="java:cn.gov.zjport.suzhou.domain.CustomUserRole" qname="ns:CustomUserRole" xmlns:ns="urn:GetUser4WebService"/>
</service>
2.客户端测试代码
QName qn = new QName("urn:GetUser4WebService","CustomUser");
QName qn1 = new QName("urn:GetUser4WebService","CustomRole");
QName qn2 = new QName("urn:GetUser4WebService","CustomUserRole");
call.setTargetEndpointAddress(new URL("http://localhost:8080/suzhouPlatform/webServices/sendUser") );
call.setOperationName(new QName("http://localhost:8080/suzhouPlatform/webServices/sendUser","getUserByUserId"));
call.registerTypeMapping(CustomUser.class, qn,new BeanSerializerFactory(CustomUser.class, qn),new BeanDeserializerFactory(CustomUser.class, qn));
call.registerTypeMapping(CustomRole.class, qn1,new BeanSerializerFactory(CustomRole.class, qn1),new BeanDeserializerFactory(CustomRole.class, qn1));
call.registerTypeMapping(CustomUserRole.class, qn2,new BeanSerializerFactory(CustomUserRole.class, qn2),new BeanDeserializerFactory(CustomUserRole.class, qn2));
Object result = call.invoke(new String[]{"admin"});
大概代码就这样了^_^
今天用jquery万能方法$()的时候,发现点小问题:
页面表单如下
<input type="text" id="user.userid" name="user.userid"/>
JS中用$("#user.userid").val()这个方法的时候一直取不到这个节点的值,搞了半天没反应,firebug一直报未定义的错误
后来将表单修改了下,id="userid"
然后用$("#userid").val()就能取到这个值
????????????还没搞清楚这个是什么原因。
今天遇到一个问题,tomcat启动的时候一直报错:
2008-8-1 9:31:29 org.apache.catalina.core.StandardContext start
严重: Error in resourceStart()
2008-8-1 9:31:29 org.apache.catalina.core.StandardContext start
严重: Error getConfigured
网上查了半天没有找到答案,很多人说是web.xml配置有问题,但是看了半天也没发现到底错在哪里。
后来有baidu了下org.apache.catalina.startup.TldConfig这句话,才发现上面的提示的日志太不全了
在src目录下新建一个log4j.properties文件:
log4j.rootCategory=INFO,ROOT
log4j.category.org.springframework info,Spring
log4j.category.org.hibernate info,Hibernate
log4j.category.net.sf.ehcache INFO,Ehcache
log4j.appender.ROOT=org.apache.log4j.ConsoleAppender
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout
log4j.appender.ROOT.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %C{1}:%M - %m%n
log4j.appender.Spring=org.apache.log4j.ConsoleAppender
log4j.appender.Spring.layout=org.apache.log4j.PatternLayout
log4j.appender.Spring.layout.ConversionPattern=[Spring]: %-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %C{1}:%M - %m%n
log4j.appender.Hibernate=org.apache.log4j.ConsoleAppender
log4j.appender.Hibernate.layout=org.apache.log4j.PatternLayout
log4j.appender.Hibernate.layout.ConversionPattern=[Hibernate]: %-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %C{1}:%M - %m%n
log4j.appender.Ehcache=org.apache.log4j.ConsoleAppender
log4j.appender.Ehcache.layout=org.apache.log4j.PatternLayout
log4j.appender.Ehcache.layout.ConversionPattern=[Ehcache]: %-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %C{1}:%M - %m%n
才发现问题出现在了一个对象和表的映射配置文件:hbm.xml里面。
在一个 一对多关系的时候,我将实体对象里的set<>属性删除了,但是对应的hbm.xml文件中相应的属性没删
HOHO,问题解决^O^