从web服务方法tomcat6 web服务调用nodfounderror

我正在处理公开Web服务的Java Web应用程序。这个Web服务在同一台Tomcat服务器上对另外两个Java Web服务进行远程调用。如果我尝试从另外两个服务调用方法,则会得到一堆导致自动生成的代码中出现NoSuchMethodError的错误。我使用Netbeans 6.9,sun java 1.6和apache tomcat 6.0.26。我单独测试了Web服务,它们工作正常。从web服务方法tomcat6 web服务调用nodfounderror

谢谢你的时间。

让我更具体

我与RecommendationManager Web服务的RecommendationWeb Web应用程序:

@WebService() 

public class RecommendationManager {

public ArrayList<Long> getRecommendation(long userId, int NumOfRecommendations) {

List<RecommendedItem> recommendations = this.myHModel.getRecommendations(userId, NumOfRecommendations);

ArrayList<Long> result = new ArrayList<Long>();

Iterator itr = recommendations.iterator();

while(itr.hasNext()) {

RecommendedItem recItem = (RecommendedItem) itr.next();

result.add(new Long(recItem.getItemID()));

}

return result;

}

}

,并与ETL_WS Web服务的ETL_Procedures Web应用程序:

@WebService() 

public class ETL_WS {

public ArrayList<Long> getCorrespondingActiveCouponsForRecommendation(ArrayList<Long> itemCategories, int numOfRecoms) {

int sumOfAllRecommendedCategories = 0;

Iterator itr = itemCategories.iterator();

ArrayList<Coupon> coupons = new ArrayList<Coupon>();

ArrayList<Long> recommendedCoupons = new ArrayList<Long>();

HashMap productOccurences = new HashMap();

while(itr.hasNext()) {

Long item = (Long) itr.next();

int val = 0;

ArrayList<Coupon> temp = (ArrayList<Coupon>) couponMap.getCoupon(item);

if(temp != null) {

Iterator itr_a = temp.iterator();

while(itr_a.hasNext()) {

val += 1;

sumOfAllRecommendedCategories += 1;

Coupon tmp_coupon = (Coupon) itr_a.next();

if(tmp_coupon.isActive())

coupons.add(tmp_coupon);

}

productOccurences.put(item, new Integer(val));

}

}

long currentCat = coupons.get(0).getItem_id();

int categoryRecs = 0;

Integer currentOccurence = (Integer) productOccurences.get(new Long(currentCat));

int maxCategoryItems = (currentOccurence.intValue()/sumOfAllRecommendedCategories);

int tempRecItems = 0;

int listIndex = 0;

while(tempRecItems < numOfRecoms && listIndex < coupons.size()) {

if(categoryRecs < maxCategoryItems && currentCat == coupons.get(listIndex).getItem_id()) {

recommendedCoupons.add(coupons.get(listIndex).getItem_id());

listIndex += 1;

tempRecItems += 1;

categoryRecs += 1;

}else if(categoryRecs < maxCategoryItems && currentCat != coupons.get(listIndex).getItem_id()) {

recommendedCoupons.add(coupons.get(listIndex).getItem_id());

currentCat = coupons.get(listIndex).getItem_id();

currentOccurence = (Integer) productOccurences.get(new Long(currentCat));

maxCategoryItems = (currentOccurence.intValue()/sumOfAllRecommendedCategories);

categoryRecs = 1;

listIndex += 1;

tempRecItems += 1;

}else {

recommendedCoupons.add(coupons.get(listIndex).getItem_id());

currentCat = coupons.get(listIndex).getItem_id();

currentOccurence = (Integer) productOccurences.get(new Long(currentCat));

maxCategoryItems = (currentOccurence.intValue()/sumOfAllRecommendedCategories);

categoryRecs = 1;

listIndex += 1;

tempRecItems += 1;

}

}

return recommendedCoupons;

}

}

这两种方法在INTERFACE_LAYER Web服务的Recommended_Interface Web应用程序中调用:

@WebService() 

public class INTERFACE_LAYER {

public ArrayList<Long> requestRecommendation(long userID, int noOfRecoms) {

ArrayList<Long> recommendedCoupons = null;

ArrayList<Long> recommendedItems = (ArrayList<Long>) getRecommendation(userID, noOfRecoms);

recommendedCoupons = (ArrayList<Long>) getCorrespondingActiveCouponsForRecommendation(recommendedItems, noOfRecoms);

return recommendedCoupons;

}

private static java.util.List<java.lang.Long> getRecommendation(long arg0, int arg1) {

ws.recommender.RecommendationManagerService service = new ws.recommender.RecommendationManagerService();

ws.recommender.RecommendationManager port = service.getRecommendationManagerPort();

return port.getRecommendation(arg0, arg1);

}

private static java.util.List<java.lang.Long> getCorrespondingActiveCouponsForRecommendation(java.util.List<java.lang.Long> arg0, int arg1) {

ws.etl.ETLWSService service = new ws.etl.ETLWSService();

ws.etl.ETLWS port = service.getETLWSPort();

return port.getCorrespondingActiveCouponsForRecommendation(arg0, arg1);

}

}

回答:

不工作的原因是Web服务方法ArrayList的返回值。当我将其更改为字符串时,它工作。

以上是 从web服务方法tomcat6 web服务调用nodfounderror 的全部内容, 来源链接: utcz.com/qa/263089.html

回到顶部