1.实体类
package com.flex;
public class Revenue {
private String product;
private String quarter;
private String amount;
public String getProduct() {
return product;
}
public void setProduct(String product) {
this.product = product;
}
public String getQuarter() {
return quarter;
}
public void setQuarter(String quarter) {
this.quarter = quarter;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
}
2.服务类
package com.flex;
import java.util.ArrayList;
import java.util.List;
public class RevenueServicer {
private Revenue rev;
private List lstRevenue;
public List searchRevenue(String filed,String fieldValue) throws Exception{
lstRevenue = new ArrayList();
if(filed.equals("Quarter"))
{
if(fieldValue.equals("Q1"))
{
rev = new Revenue();
rev.setAmount("45897.7");
rev.setProduct("TV");
rev.setQuarter("Q1");
lstRevenue.add(rev);
rev = new Revenue();
rev.setAmount("32931.7");
rev.setProduct("Camera");
rev.setQuarter("Q1");
lstRevenue.add(rev);
rev = new Revenue();
rev.setAmount("1568.4");
rev.setProduct("MobilePhone");
rev.setQuarter("Q1");
lstRevenue.add(rev);
}
}
if(filed.equals("Product"))
{
if(fieldValue.equals("TV"))
{
rev = new Revenue();
rev.setAmount("12345.7");
rev.setProduct("TV");
rev.setQuarter("Q1");
lstRevenue.add(rev);
rev = new Revenue();
rev.setAmount("34567.7");
rev.setProduct("TV");
rev.setQuarter("Q2");
lstRevenue.add(rev);
rev = new Revenue();
rev.setAmount("4567.4");
rev.setProduct("TV");
rev.setQuarter("Q3");
lstRevenue.add(rev);
}
}
return lstRevenue;
}
}
3.接口类
package com.flex;
import java.util.List;
public interface RevenueService {
public abstract List getRevenueByQuarter(String quarter);
public abstract List getRevenueByProduct(String quarter);
}
4.接口实现类
package com.flex;
import java.util.ArrayList;
import java.util.List;
public class RevenueWSImpl implements RevenueService {
private Revenue rev;
private List lstRevenue;
public Revenue getRev() {
return rev;
}
public void setRev(Revenue rev) {
this.rev = rev;
}
public List getLstRevenue() {
return lstRevenue;
}
public void setLstRevenue(List lstRevenue) {
this.lstRevenue = lstRevenue;
}
/* (non-Javadoc)
* @see com.flex.RevenueService#getRevenueByQuarter(java.lang.String)
*/
public List getRevenueByQuarter(String quarter){
lstRevenue = new ArrayList();
try {
RevenueServicer r = new RevenueServicer();
lstRevenue=r.searchRevenue("Quarter", quarter);
} catch (Exception e) {
e.printStackTrace();
}
return lstRevenue;
}
/* (non-Javadoc)
* @see com.flex.RevenueService#getRevenueByProduct(java.lang.String)
*/
public List getRevenueByProduct(String quarter){
lstRevenue = new ArrayList();
try {
RevenueServicer r = new RevenueServicer();
lstRevenue=r.searchRevenue("Product", quarter);
} catch (Exception e) {
e.printStackTrace();
}
return lstRevenue;
}
}
5.配置/META-INF/xfire/services.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>ws</name>
<namespace>firstws</namespace>
<serviceClass>com.flex.RevenueService</serviceClass>
<implementationClass>com.flex.RevenueWSImpl</implementationClass>
</service>
</beans>
6.因为方法返回的是LIST,所以我们要求再配置一个转换文件,告诉XFIRE我们需要转换返回的类型
注意点,该转换类型必须是以接口的名字+aegis.xml结束
/com/flex/RevenueService.aegis.xml
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<method name="getRevenueByProduct">
<parameter index="0" componentType="java.lang.String"/>
<return-type componentType="com.flex.Revenue"/>
</method>
<method name="getRevenueByQuarter">
<parameter index="0" componentType="java.lang.String"/>
<return-type componentType="com.flex.Revenue"/>
</method>
</mapping>
</mappings>
7.发布部署通过“http://127.0.0.1:8080/XFireForFlex/services/ws?wsdl”来查看是否部署成功