错误代码:
org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: At least one categoryBag, find_tModel or tModelBag must be supplied
org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:92)
org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
$Proxy46.save_subscription(Unknown Source)
com.uddi.action.QueryServiceAction.queryByName(QueryServiceAction.java:310)
程序代码:
ActionContext context = ActionContext.getContext();
session = context.getSession();
HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
UDDI_Inquiry_PortClient client = new UDDI_Inquiry_PortClient();
UDDI_Inquiry_PortType inquiryService = client.getUDDIInquiryServicePort();
UDDI_Subscription_PortClient subscriptionClient = new UDDI_Subscription_PortClient();
UDDI_Subscription_PortType subscriptionService = subscriptionClient.getUDDISubscriptionServicePort();
FindQualifiers fq = new FindQualifiers();
fq.getFindQualifier().add("binarysort");
fq.getFindQualifier().add("sortbydateasc");
fq.getFindQualifier().add("approximatematch");
Name name = new Name();
sName = request.getParameter("sName");
System.out.println("authinfo:"+authinfo);*/
name.setValue("%"+sName+"%");
FindService fs = new FindService();
fs.setAuthInfo(authinfo);
fs.setFindQualifiers(fq);
fs.getName().add(name);
ServiceList serviceList = inquiryService.find_service(fs);
ServiceInfos sif = serviceList.getServiceInfos();
List sifs = sif.getServiceInfo();
List sdlists = new ArrayList();
for(ServiceInfo s:sifs){
String serviceKey = s.getServiceKey();
GetServiceDetail gsd=new GetServiceDetail();
gsd.setAuthInfo(authinfo);
gsd.getServiceKey().add(serviceKey);
ServiceDetail serviceDetail = inquiryService.get_serviceDetail(gsd);
sdlists.add(serviceDetail);
BusinessService bs = serviceDetail.getBusinessService().get(0);
String bindingkey = bs.getBindingTemplates().getBindingTemplate().get(0).getBindingKey();
GetBindingDetail gbd = new GetBindingDetail();
gbd.setAuthInfo(authinfo);
gbd.getBindingKey().add(bindingkey);
BindingDetail bindingdetail=inquiryService.get_bindingDetail(gbd);
BindingTemplate bindingtemplate=bindingdetail.getBindingTemplate().get(0);
AccessPoint myPoint = bindingtemplate.getAccessPoint();
myPoint.setUseType("http");
myPoint.setValue("http://1024040730@qq.com");
bindingtemplate.setAccessPoint(myPoint);
SubscriptionFilter myFilter = new SubscriptionFilter();
myFilter.setFindService(fs);
myFilter.setGetServiceDetail(gsd);
Subscription mySubscription = new Subscription();
mySubscription.setBindingKey(bindingtemplate.getBindingKey());
mySubscription.setMaxEntities(1000);
mySubscription.setNotificationInterval(new DatatypeFactoryImpl().newDurationDayTime("PT1M"));
mySubscription.setSubscriptionFilter(myFilter);
mySubscription.setBrief(true);
// System.out.println(mySubscription);
SaveSubscription mySaveSubscription = new SaveSubscription();
mySaveSubscription.setAuthInfo(authinfo);
mySaveSubscription.getSubscription().add(mySubscription);
// System.out.println(mySaveSubscription);
Subscriptions mySubscriptions = subscriptionService.save_subscription(mySaveSubscription);