服务器端代码:
先定义一个接口 和实现类,定义一个实体
public class CallCenterCDR implements Serializable { private String policyNo; private String CarID; private String PolicyHolderID; private String PolicyHolderName; private String InsuredID; private Date UWDate;
字段比较多. .......... set/get方法
@WebService // public interface ForCallCenterCDResponseDto { public String Res(@WebParam(name = "policyNo") String policyNo, @WebParam(name = "CarID") String CarID, @WebParam(name = "InsuredID") String InsuredID ); }
@Component//自动把这个类交给spring工厂,生成id="类名小写"的 bean 这样认为对不对? @WebService public class ForCallCenterCDResponseDtoImpl implements ForCallCenterCDResponseDto { @Override public String Res(String policyNo, String CarID, String InsuredID) { StringBuilder result=new StringBuilder(); if(policyNo==null||policyNo.equalsIgnoreCase("null")||policyNo.equalsIgnoreCase("")){ result.append("policyNo不能为空"); }else{ /* * 从数据库中获取数据,这里用一个测试类代替 */ TestData testData=new TestData();
CallCenterCDR ccc=testData.test(); //获得一个有数据的实体 /** * 转换成Json */ /*String jsonCCC=GsonUtil.transformJson(ccc); result.append(jsonCCC);*/ } return result.toString(); } }
配置web.xml spring.xml
部署项目到weblogic 启动服务器,浏览器可以访问的到!
无论是用myeclipse 或者使用CXF 服务器生成的客户端代码都没有 CallCenterCDR.java这个文件
客户端得到的是一个Json的字符串,必须转换成对象的类型才能用 但是客户端没有这个实体..(这里我一直很困惑) 实际 服务端和客户端又不在一起
客户端接口,实现类
@webservice //也有人说这个注释也是必须的 我也没加 求解释 public interface ForCallCenterCDRequestDto { public String Req(String policyNo, String CarID, String InsuredID ); }
public class ForCallCenterCDRequestDtoImpl implements ForCallCenterCDRequestDto { @Override public String Req(String policyNo, String CarID, String InsuredID) { ForCallCenterCDResponseDtoImplService service = new ForCallCenterCDResponseDtoImplService(); ForCallCenterCDResponseDto portType = service.getForCallCenterCDResponseDtoImplPort(); String result=portType.res(policyNo,CarID,InsuredID); return result; } }
public class Test { public static void main(String[] args) { ForCallCenterCDRequestDtoImpl test=new ForCallCenterCDRequestDtoImpl(); String json=test.Req("1", "2", "3"); java.lang.reflect.Type type = new TypeToken<CallCenterCDR>(){}.getType(); /** * 由于从json转换成实体,需要知道实体的类型CallCenterCDR,生成的客户端没有实体.....这样直接调用客户端的实体 不恰当吧 */ CallCenterCDR c=new Gson().fromJson(json, type); System.out.println(c.getAreaCity()+"***"+c.getPolicyHolderID()+"***"+c.getPayInfo()+"***"+c.getUWDate()); } }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。