开发者社区> 问答> 正文

webservice 的一些问题,我虽写了一些,还是混沌不清!求大神检查!

服务器端代码:


先定义一个接口 和实现类,定义一个实体


public class CallCenterCDR implements Serializable {
private String policyNo;	
private String CarID;
private String PolicyHolderID;	
private String PolicyHolderName; 
private String InsuredID;
private Date UWDate;</pre> 

字段比较多. .......... 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();</pre> 
                        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这个文件

![image.png](https://ucc.alicdn.com/pic/developer-ecology/8c0e58230e634664a02a64ff6f6cbfca.png)

客户端得到的是一个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<span></span>,生成的客户端没有实体.....这样直接调用客户端的实体  不恰当吧
	 */
	CallCenterCDR c=new Gson().fromJson(json, type);
	System.out.println(c.getAreaCity()+"***"+c.getPolicyHolderID()+"***"+c.getPayInfo()+"***"+c.getUWDate());
}

}



展开
收起
huc_逆天 2020-05-28 13:28:56 651 0
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云总监课第五期第二节:可靠性探索–利用混沌工程理念提高工程可靠性 立即下载
典型业务逻辑漏洞挖掘 立即下载
代码未写,漏洞已出——谈谈设计不当导致的安全问题 立即下载