(Originally posted Aug 19 2009) Accessing Zeus' Control API from Scala is a relatively straightforward process. It is almost identical to the process you use for Java. Currently the best way to access the control API is using the Apache axis library which you can obtain here . You will also need the WSDL files describing the API. To download the WSDL files go to the Zeus Admin Server then to the online help, and look for the "Zeus Control API WSDL Files" link on the 'Manuals' page. One final dependency that needs to be satisfied is that we need the javamail package, which can be found here . Once you have downloaded and extracted these files we need to convert the WSDL files to Java code, compile them and package them up. On a Unix system you need to issue these commands, > for F in wsdl/.wsdl ; do java –cp :axis-1_4/lib/:javamail-1.4.1/lib/* \ org.apache.axis.wsdl.WSDL2Java $F ; done mkdir obj javac –d obj com/zeus/soap/zxtm//.java cd obj jar cf ZXTM-API.jar com/zeus This will produce ZXTM-API.jar which you will need to add to your classpath. We are ready to write a Scala program to list the running Virtual Servers. This mirrors our Java example quite closely which you can look at <a href="http://www.zeus.com/community/code-samples/list-running-virtual-servers-using-scala#" target=_blank>here</a>.</p> listVS.scala import com.zeus.soap.zxtm._1_0._; import java.security.Security; import java.security.KeyStore; import java.security.Provider; import java.security.cert.X509Certificate; import javax.net.ssl.ManagerFactoryParameters; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactorySpi; import javax.net.ssl.X509TrustManager; objectVSList{ def main(args:Array[String]){ Security.addProvider(newMyProvider) Security.setProperty("ssl.TrustManagerFactory.algorithm", "TrustAllCertificates") val vsl =newVirtualServerLocator vsl.setVirtualServerPortEndpointAddress( "https://user:
[email protected]:9090/soap") val port = vsl.getVirtualServerPort val vs_names = port.getVirtualServerNames val enabled_vs = port.getEnabled( vs_names ) for( i <-0until vs_names.length ) if( enabled_vs(i)) println(vs_names(i)) } } // Below is TrustManager boiler-plate objectMyTrustManagerFactoryextendsTrustManagerFactorySpi{ overridedef engineInit(keystore:KeyStore){} overridedef engineInit(mgrparams:ManagerFactoryParameters){} overridedef engineGetTrustManagers ={ Array[TrustManager](newMyX509TrustManager) } } classMyX509TrustManagerextends X509TrustManager { overridedef checkClientTrusted(chain:Array[X509Certificate], authType:String){} overridedef checkServerTrusted(chain:Array[X509Certificate], authType:String){} overridedef getAcceptedIssuers :Array[X509Certificate]=null } classMyProviderextendsProvider("MyProvider",1.0,"Trust certificates"){ put("TrustManagerFactory.TrustAllCertificates", MyTrustManagerFactory.getClass.getName ) } Running the example is pretty simple, first compile it, > scalac -classpath ZXTM-API.jar listVS.scala then run it, > scala -classpath ZXTM-API.jar listVS Main website Mail servers Test site
... View more