import java.util.List;
import java.util.Properties;
import java.util.Vector;
import javax.wsdl.WSDLElement;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.extensions.soap.SOAPAddress;
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
import org.apache.soap.util.xml.DOMUtils;
import org.uddi4j.client.UDDIProxy;
import org.uddi4j.datatype.Name;
import org.uddi4j.datatype.OverviewDoc;
import org.uddi4j.datatype.OverviewURL;
import org.uddi4j.datatype.binding.AccessPoint;
import org.uddi4j.datatype.binding.BindingTemplate;
import org.uddi4j.datatype.binding.BindingTemplates;
import org.uddi4j.datatype.binding.InstanceDetails;
import org.uddi4j.datatype.binding.TModelInstanceDetails;
import org.uddi4j.datatype.binding.TModelInstanceInfo;
import org.uddi4j.datatype.business.BusinessEntity;
import org.uddi4j.datatype.business.Contact;
import org.uddi4j.datatype.business.Contacts;
import org.uddi4j.datatype.service.BusinessService;
import org.uddi4j.datatype.tmodel.TModel;
import org.uddi4j.response.AuthToken;
import org.uddi4j.response.BusinessDetail;
import org.uddi4j.response.BusinessInfo;
import org.uddi4j.response.BusinessList;
import org.uddi4j.response.ServiceDetail;
import org.uddi4j.response.ServiceInfo;
import org.uddi4j.response.ServiceList;
import org.uddi4j.response.TModelDetail;
import org.uddi4j.transport.TransportFactory;
import org.uddi4j.util.CategoryBag;
import org.uddi4j.util.FindQualifier;
import org.uddi4j.util.FindQualifiers;
import org.uddi4j.util.IdentifierBag;
import org.uddi4j.util.KeyedReference;
import javax.wsdl.Binding;
import javax.wsdl.Definition;
import javax.wsdl.BindingOperation;
import javax.wsdl.Port;
import javax.wsdl.Service;
import com.ibm.wsdl.factory.WSDLFactoryImpl;
import com.sun.xml.bind.v2.model.core.Element;
public class CreateService {
//public static void publisherService() {
public static void main(String[] args){
Properties config = Configurator.load();//加载 示例的配置
String inquiryURL = config.getProperty("inquiryURL");//"http://localhost:8080/juddi/inquiry";
String publishURL = config.getProperty("publishURL");//"http://localhost:8080/juddi/publish";
String userId =config.getProperty("userid");// "juddi";
String credential = config.getProperty("password");//"juddi";
String transportClass = config.getProperty("TransportClassName");//"org.uddi4j.transport.ApacheSOAPTransport";
String bunicessIdenKeyVal=config.getProperty("bunicessIdentifierKeyValue"); //企业标志key值
String bunicessCategoryVal= config.getProperty("bunicessCategoryVal"); //企业类别key值
String businessName=config.getProperty("businessName");
String wsdlURL=config.getProperty("wsdlURL");
String ContactPerson=config.getProperty("ContactPerson");
String businessKey="";
KeyedReference category=null;
String serviceName="";
ServiceDetail serviceDetail=null;
CategoryBag TmodelcatBag=null;
boolean isHaveService=true; //是否存在service
Vector serviceInfoVector;
BusinessEntity newBusiness;
String methodName=""; //ws里的方法名
boolean flag=false;
System.setProperty(TransportFactory.PROPERTY_NAME, transportClass);
/* ************************** */
UDDIProxy proxy = new UDDIProxy();
try {
proxy.setInquiryURL(inquiryURL);
proxy.setPublishURL(publishURL);
AuthToken token = proxy.get_authToken(userId, credential);
//根据juddi4j的WSDLReader读取wsdl文件
WSDLFactory wsdlFactory = WSDLFactoryImpl.newInstance();
WSDLReader wsdlReader = wsdlFactory.newWSDLReader();
Definition def = wsdlReader.readWSDL(null, wsdlURL);
//得到wsdl文档中的服务名
Service wsdlService = ((Service[]) def.getServices().values().toArray(new Service[0]))[0];
BusinessService businessService = new BusinessService("");
serviceName=wsdlService.getQName().getLocalPart();
Vector entities = new Vector();//企业实体数组
//查找business
Vector names = new Vector();//创建一个名称数组对象
names.add(new Name(businessName));
FindQualifiers findQualifiers = new FindQualifiers();
Vector qualifier = new Vector();
qualifier.add(new FindQualifier("caseSensitiveMatch"));
findQualifiers.setFindQualifierVector(qualifier);
BusinessList businessList = proxy.find_business(names, null, null,null, null, findQualifiers, 5);//查找一个或多个企业实体,并设置最大个数为5
//测试得到的企业的信息
Vector businessInfoVector = businessList.getBusinessInfos().getBusinessInfoVector();
//System.out.println("已存企业的个数===="+ businessInfoVector.size());
//没有企业,则创建一个企业
if( businessInfoVector.size()<=0){
newBusiness = new BusinessEntity("", businessName);//一个企业实体
/* 联系方式的层层包含,真麻烦 */
Contact newContact = new Contact(ContactPerson);
Vector contactsVector = new Vector();
contactsVector.addElement(newContact);
Contacts contacts = new Contacts();//联系方式s-->包含多个联系方式
contacts.setContactVector(contactsVector);
newBusiness.setContacts(contacts);
/* 标识符 包 */
KeyedReference taxid = new KeyedReference(TModel.HOMEPAGE_TMODEL_KEY,bunicessIdenKeyVal ); //BUSINESS_IDENTIFIER keyValue
IdentifierBag idBag = new IdentifierBag();
idBag.add(taxid);
newBusiness.setIdentifierBag(idBag);
/* 种类 包 */
category = new KeyedReference(TModel.NAICS_TMODEL_KEY, bunicessCategoryVal);//501100 蚕业分类
CategoryBag catBag = new CategoryBag();
catBag.add(category);
newBusiness.setCategoryBag(catBag);
entities.addElement(newBusiness);
//保存企业
BusinessDetail bd = proxy.save_business(token.getAuthInfoString(),entities);
//得到企业相关信息--businessKey
Vector businessEntities = bd.getBusinessEntityVector();
BusinessEntity returnedBusinessEntity = (BusinessEntity) (businessEntities.elementAt(0));
businessKey=returnedBusinessEntity.getBusinessKey();
} else {
// 如果已存在企业,则得到企业的有关信息
BusinessInfo businessInfo = (BusinessInfo) businessInfoVector.elementAt(0);
businessKey = businessInfo.getBusinessKey();
serviceInfoVector = businessInfo.getServiceInfos().getServiceInfoVector();
//System.out.println("serviceInfoVector的个数是=="+ serviceInfoVector.size());
for (int i = 0; i < serviceInfoVector.size(); i++) {
ServiceInfo serviceInfo = (ServiceInfo) serviceInfoVector.elementAt(i);
serviceDetail = proxy.get_serviceDetail(serviceInfo.getServiceKey());
BusinessService thisService = (BusinessService) serviceDetail.getBusinessServiceVector().elementAt(0);
if (thisService.getBindingTemplates().size() > 0) {
category = thisService.getCategoryBag().get(0);
TmodelcatBag = thisService.getCategoryBag();
// 如果存在企业,则查找其发布的服务名
ServiceList serviceList = proxy.find_service(null,null, TmodelcatBag, null, null, 10);
Vector serviceVector = serviceList.getServiceInfos().getServiceInfoVector();
//System.out.println("已存在的服务个数是: " + serviceVector.size());
// 是否存在服务,如果存在服务,且服务和要发布的服务一样,则不发布服务,反之,则发布新的服务
if (serviceInfoVector.size() > 0) {
ServiceInfo serviceInfo2 = (ServiceInfo) serviceInfoVector.elementAt(0);
//System.out.println(serviceName + "******"+ serviceInfo.getDefaultNameString());
if (!serviceName.equals(serviceInfo.getDefaultNameString())) {
flag = false;
} else {
flag =
评论1