查询juddiv3中的服务

juddiv3已经部署好了~~鼓掌~~~建议尽量就不要动tomcat这个目录了~~使用myeclipse的时候还是使用它自带的tomcat,然后再换个端口吧~~要不两个同时开的时候会冲突(要用到myeclipse编程,对juddiv3进行操作)~~我是把myeclipse自带的tomcat发布端口改了~~方法很简单~~

找到MyEclipse下的server.xml文件,我的路径是C:\Documents and Settings\Administrator\Workspaces\MyEclipse 8.5\.metadata\.me_tcat\conf\server.xml,将其中<connector port="8080".....改成其他端口号,我的是9000~~<server port ="8005">也改成别的号,我的是9005,打开MyEclipse,windows->preferences->Myeclipse->Servers->Integrated Sandbox->MyEclipse Tomcat 6->改成刚才设置的9000~~~~Over~~

其实可以使用soapUI对juddiv3进行服务的发布和查询,但是如果juddiv3不在本机上,我就不知道如何进行查询了,用代码实现的话即使是远程也可以进行操作,只需要修改一下配置文件即可。

首先进行查询服务的编写~~~

1. MyEclipse下新建一个web项目,导入与juddi建立连接所需要的各种jar包,我上传到我的资源里了,可以到那里下载,放上地址http://download.csdn.net/detail/qinyuzhujj/4541404。下图是jar包列表。

2. 下面直接上代码。

package com.test.inquiry;

import com.inquiry.AnalyticWsdl;
import junit.framework.Assert;

import org.apache.juddi.v3.client.config.ClientConfig;
import org.apache.juddi.v3.client.config.UDDIClerkManager;
import org.apache.juddi.v3.client.transport.Transport;
import org.apache.log4j.helpers.Loader;
import org.uddi.v3_service.*;
import org.uddi.api_v3.*;
public class Inquiry {
 
    public void inquiry()
    {
    	try 
    	  {     
		    String clazz=UDDIClerkManager.getClientConfig().getUDDINode("default").getProxyTransport();
            Class<?> transportClass = Loader.loadClass(clazz);
		    /*
    		    String clazz=UDDIClerkManager.getClientConfig().getUDDINode("default").getProxyTransport();
    	        Class<?> transportClass=Class.forName(clazz, true, Thread.currentThread().getContextClassLoader());
    	      */
    	      if(transportClass!=null)
    	      {
    	       //获得authtoken
    	       Transport transport=(Transport)transportClass.newInstance();
    	       UDDISecurityPortType securityService=transport.getUDDISecurityService();
    	       GetAuthToken getauthToken=new GetAuthToken();
    	       getauthToken.setUserID("root");    //用户名
    	       getauthToken.setCred("root");      //密码
    	       AuthToken authtoken=securityService.getAuthToken(getauthToken);
    	       String authinfo=authtoken.getAuthInfo();
    	       System.out.println(authinfo);        //输出获取的AuthToken               
    	       System.out.println("-----------------查询所有服务-----------------") ;	   
    
    	       //获得businessinfo
    	       UDDIInquiryPortType inquiryService=transport.getUDDIInquiryService();
    	       FindBusiness findbusiness=new FindBusiness();
    	       findbusiness.setAuthInfo(authinfo);
    	       Name name1=new Name();
    	       name1.setValue("%");        //查找所有服务采用%    	       
    	       FindQualifiers qualifiers=new FindQualifiers();
       	       qualifiers.getFindQualifier().add(org.apache.juddi.query.util.FindQualifiers.APPROXIMATE_MATCH); //按照APPROXIMATE_MATCH进行过滤
    	       findbusiness.getName().add(name1);
    	       findbusiness.setFindQualifiers(qualifiers);
    	      // BusinessList list=inquiryService.findBusiness(findbusiness);
    	       
    	       //获得serviceinfo
    	       FindService findservice=new FindService();
    	       findservice.setAuthInfo(authinfo);
    	       findservice.getName().add(name1);
    	       findservice.setFindQualifiers(qualifiers);
    	       ServiceList list1=inquiryService.findService(findservice);
    	       GetServiceDetail gsd=new GetServiceDetail();
    	        for(ServiceInfo serviceInfo :list1.getServiceInfos().getServiceInfo()){
    	        	gsd.getServiceKey().add(serviceInfo.getServiceKey());
    	        	System.out.println("--serviceKey:"+serviceInfo.getServiceKey());     //输出获取的serviceKey
    	        	String servicekey=serviceInfo.getServiceKey();
    	        	
    	        	
    	        	//获得businessservice
    	        	GetServiceDetail getServiceDetail=new GetServiceDetail();
    	        	getServiceDetail.setAuthInfo(authinfo);
    	        	getServiceDetail.getServiceKey().add(servicekey);
    	        	ServiceDetail serviceDetail=inquiryService.getServiceDetail(getServiceDetail);
    	        	BusinessService businessservice=serviceDetail.getBusinessService().get(0);
    	        	System.out.println("**serviceName:"+businessservice.getName().get(0).getValue()); //输出serviceName
    	        	String bindingkey = businessservice.getBindingTemplates().getBindingTemplate().get(0).getBindingKey();
    	        	System.out.println("**bindingKey"+bindingkey);


    	        	//获得bindingtemplate中的accesspoint
    	        	GetBindingDetail gbd = new GetBindingDetail();
    	        	gbd.setAuthInfo(authinfo);
    	        	gbd.getBindingKey().add(bindingkey);
    	        	BindingDetail bindingdetail=inquiryService.getBindingDetail(gbd);
    	        	BindingTemplate bindingtemplate=bindingdetail.getBindingTemplate().get(0);
    	        	String accesspoint=bindingtemplate.getAccessPoint().getValue();
    	        	System.out.println("**accessPoint:"+accesspoint);   //输出accessPoint
    	    	        
    	        	}
    	        	

    	        }
    	        
    	        System.out.println("查询成功!!!");
    }catch(Exception e)
    	  {
    	   e.printStackTrace();
    	   Assert.fail("Could not obtain authInfo token.");}
    }
    public static void main(String[] args){
    	Inquiry inq=new Inquiry();
    	inq.inquiry();
    	
    } 
    }


        3. 打开工程,进入%工程目录%\WebRoot\WEB-INF\classes\,我的是C:\Documents and Settings\Administrator\Workspaces\MyEclipse 8.5\Test_Publish02\WebRoot\WEB-INF\classes\,有点长。。新建一个META-INF包,将uddi.xml放入

uddi.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<uddi>
    <reloadDelay>5000</reloadDelay>
    <manager name="test-manager">
  <nodes>
   <node isHomeJUDDI="true">
       <!-- required 'default' node -->
    <name>default</name> 
    <description>Main jUDDI node</description>
    <properties>
     <property name="serverName" value="localhost" />
     <property name="serverPort" value="8080" />
    </properties>
    <!-- JAX-WS Transport -->
    <proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
    <custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
    <inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry?wsdl</inquiryUrl>
          <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish?wsdl</publishUrl>
          <securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security?wsdl</securityUrl>
    <subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription?wsdl</subscriptionUrl>
    <subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
    <juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
    <!-- In VM Transport Settings 
    <proxyTransport>org.apache.juddi.v3.client.transport.InVMTransport</proxyTransport>
    <custodyTransferUrl>org.apache.juddi.api.impl.UDDICustodyTransferImpl</custodyTransferUrl>
    <inquiryUrl>org.apache.juddi.api.impl.UDDIInquiryImpl</inquiryUrl>
          <publishUrl>org.apache.juddi.api.impl.UDDIPublicationImpl</publishUrl>
          <securityUrl>org.apache.juddi.api.impl.UDDISecurityImpl</securityUrl>
    <subscriptionUrl>org.apache.juddi.api.impl.UDDISubscriptionImpl</subscriptionUrl>
    <subscriptionListenerUrl>org.apache.juddi.api.impl.UDDISubscriptionListenerImpl</subscriptionListenerUrl>
    <juddiApiUrl>org.apache.juddi.api.impl.JUDDIApiImpl</juddiApiUrl>
    -->
    <!-- RMI Transport Settings 
    <proxyTransport>org.apache.juddi.v3.client.transport.RMITransport</proxyTransport>
    <custodyTransferUrl>/juddiv3/UDDICustodyTransferService</custodyTransferUrl>
    <inquiryUrl>/juddiv3/UDDIInquiryService</inquiryUrl>
          <publishUrl>/juddiv3/UDDIPublicationService</publishUrl>
          <securityUrl>/juddiv3/UDDISecurityService</securityUrl>
    <subscriptionUrl>/juddiv3/UDDISubscriptionService</subscriptionUrl>
    <subscriptionListenerUrl>/juddiv3/UDDISubscriptionListenerService</subscriptionListenerUrl>
    <juddiApiUrl>/juddiv3/JUDDIApiService</juddiApiUrl>
    <javaNamingFactoryInitial>org.jnp.interfaces.NamingContextFactory</javaNamingFactoryInitial>
    <javaNamingFactoryUrlPkgs>org.jboss.naming</javaNamingFactoryUrlPkgs>
    <javaNamingProviderUrl>jnp://localhost:1099</javaNamingProviderUrl>
    -->
   </node>
   <!--
   <node>
    <name>med</name>
    <description>jUDDI node in other Department</description>
    <proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
    <custodyTransferUrl>http://med:8080/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
    <inquiryUrl>http://med:8080/juddiv3/services/inquiry?wsdl</inquiryUrl>
          <publishUrl>http://med:8080/juddiv3/services/publish?wsdl</publishUrl>
          <securityUrl>http://med:8080/juddiv3/services/security?wsdl</securityUrl>
    <subscriptionUrl>http://med:8080/juddiv3/services/subscription?wsdl</subscriptionUrl>
    <subscriptionListenerUrl>http://med:8080/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
    <juddiApiUrl>http://med:8080/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
   </node>
   -->
  </nodes>
  <!--  
  <clerks registerOnStartup="false">
     <clerk name="default" node="default" publisher="root" password="root"/>
        <clerk name="medroot" node="med"     publisher="root" password="root"/>
        <xregister>
         <service bindingKey="uddi:juddi.apache.org:servicebindings-subscriptionlistener-ws" fromClerk="default" toClerk="medroot"/>
     </xregister>
     <subscription subscriptionKey="   " clerk="medroot" />
    </clerks>
    -->
 </manager>
</uddi>


这里,如果你要访问远程的juddiv3,将<node isHomeJUDDI="true">改为<node isHomeJUDDI="false">,<property name="serverName" value="localhost" />中的localhost改成你要访问的juddiv3所在机器的ip地址,这样就可以访问了~~

4. 搞定~下篇上发布服务的~

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值