Oracle® Secure Enterprise Search Administration API Guide 11g Release 2 (11.2.2) Part Number E23428-01 |
|
|
View PDF |
This appendix contains a programming example of the Web Services Java client. It contains these topics:
See Also:
Oracle Secure Enterprise Search Java API Reference
The following source code is an example named CreateWebSource.java. If you want, you can copy and paste this example into a file on your Oracle SES host.
This example uses a stateless Administration API client to do the following:
Create a Web source named web1
.
Export web1
to show the full definition.
Create a source group named Web
containing web1
.
Create and start a schedule named schedule1
for web1
.
Print the status of schedule1
after 30 seconds.
CreateWebSource.java obtains values for these variables from the command-line arguments:
webServiceURL
userName
password
webSourceURL
For more information about these arguments, see "Shell Script Example".
import oracle.search.admin.api.ws.client.AdminAPIRuntimeFault; import oracle.search.admin.api.ws.client.AdminAPIRuntimeFault_Exception; import oracle.search.admin.api.ws.client.AdminKeyPair; import oracle.search.admin.api.ws.client.AdminPortType; import oracle.search.admin.api.ws.client.AdminService; import oracle.search.admin.api.ws.client.Credentials; import oracle.search.admin.api.ws.client.ObjectKey; import oracle.search.admin.api.ws.client.ObjectOutput; import java.util.List; import java.net.URL; import javax.xml.ws.BindingProvider; import javax.xml.namespace.QName; public class AdminWebServiceExample2 { public static void main(String[] args) throws Exception { System.out.println( "" ); try { if ( args == null || args.length != 4 ) { System.out.println( "Usage:\n AdminWebServiceExample <webServiceURL> <userName> <password> <webSourceURL>" ); } else { // Get web service URL from command line arguments String webServiceURL = args[0]; System.out.println( "Using web service URL \"" + webServiceURL + "\"\n" ); // Get username and password String userName = args[1]; String password = args[2]; // Get stateless web service client AdminPortType adminPort = getStatelessWebServiceClient( webServiceURL ); // Create Credentials object for operations Credentials credentials = new Credentials(); credentials.setUserName( userName ); credentials.setPassword( password ); // 1. Create a simple web source String webSourceURL = args[3]; String webSourceXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<search:config productVersion=\"11.2.1.0.0\" xmlns:search=\"http://xmlns.oracle.com/search\">" + " <search:sources>" + " <search:webSource>" + " <search:name>web1</search:name>" + " <search:startingUrls>" + " <search:startingUrl>" + " <search:url>" + webSourceURL + "</search:url>" + " </search:startingUrl>" + " </search:startingUrls>" + " </search:webSource>" + " </search:sources>" + "</search:config>"; adminPort.createAll( "source", webSourceXML, "password", credentials, null, null, "en" ); // 2. Export all sources to show the full definition ObjectOutput oo = adminPort.exportAll( "source", null, "password", credentials, null, "en" ); System.out.println("Web Source XML = \n" + oo.getObjectXML() ); // 3. Create a source group for the source String sourceGroupXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<search:config productVersion=\"11.2.1.0.0\" xmlns:search=\"http://xmlns.oracle.com/search\">" + " <search:sourceGroups>" + " <search:sourceGroup>" + " <search:name>Web</search:name>" + " <search:assignedSources>" + " <search:assignedSource>web1</search:assignedSource>" + " </search:assignedSources>" + " </search:sourceGroup>" + " </search:sourceGroups>" + "</search:config>"; adminPort.createAll( "sourceGroup", sourceGroupXML, null, credentials, null, null, "en" ); System.out.println("Created source group..."); // 4. Create a schedule for the web source String scheduleXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<search:config productVersion=\"11.2.1.0.0\" xmlns:search=\"http://xmlns.oracle.com/search\">" + " <search:schedules>" + " <search:schedule>" + " <search:name>schedule1</search:name>" + " <search:crawlingMode>ACCEPT_ALL</search:crawlingMode>" + " <search:recrawlPolicy>PROCESS_CHANGED</search:recrawlPolicy>" + " <search:frequency>" + " <search:manual/>" + " </search:frequency>" + " <search:assignedSources>" + " <search:assignedSource>web1</search:assignedSource>" + " </search:assignedSources>" + " </search:schedule>" + " </search:schedules>" + "</search:config>"; adminPort.createAll( "schedule", scheduleXML, null, credentials, null, null, "en" ); System.out.println("Created schedule..."); // 5. Start the schedule // Create object key for schedule name ObjectKey objectKey = new ObjectKey(); AdminKeyPair keyPair = new AdminKeyPair(); keyPair.setKeyName( "name" ); // schedules identified by name keyPair.setKeyValue( "schedule1" ); // schedule name objectKey.getAdminKeyPairs().add( keyPair ); adminPort.start( "schedule", objectKey, null, null, credentials, null, null, "en" ); System.out.println("Started schedule..."); System.out.println("Waiting 30 seconds to get status..."); Thread.sleep( 30000 ); // 6. Use object key above to get schedule state oo = adminPort.getState( "schedule", objectKey, null, // request all state properties credentials, null, "en" ); System.out.println("Schedule state XML = " + oo.getObjectXML() ); } } catch (AdminAPIRuntimeFault_Exception e) { AdminAPIRuntimeFault runtimeFault = e.getFaultInfo(); System.out.println("Caught AdminAPIRuntimeFault"); System.out.println(" message = " + runtimeFault.getMessage() ); System.out.println(" errorCode = " + runtimeFault.getErrorCode() ); System.out.println(" causeMessage = " + runtimeFault.getCauseMessage() ); System.out.println(" stackTrace = " ); e.printStackTrace( System.out ); System.out.println(" causeStackTrace = \n" + runtimeFault.getCauseStackTrace() ); } catch (Throwable t) { System.out.println("Caught unexpected run-time exception"); System.out.println(" message = " + t.getMessage() ); System.out.println(" stackTrace = " ); t.printStackTrace( System.out ); } } /** * Initializes and returns a stateless admin web service client. */ private static AdminPortType getStatelessWebServiceClient( String webServiceURL) throws Exception { AdminService adminService = new AdminService( new URL( webServiceURL ), new QName( "http://search.oracle.com/Admin", "AdminService" ) ); return adminService.getAdmin(); } }
This example uses a shell script (command file) named compileAndRun.sh to compile and run CreateWebSource.java. You can use JRockit, as shown here, or any JDK 6 that contains a JAX-WS 2.1 implementation.
#!/bin/sh CLASSPATH=.:ORACLE_HOME/search/lib/search_adminapi_wsclient.jar:MW_HOME/JROCKIT_HOME/jre/lib/rt.jar # Compile MW_HOME/JROCKIT_HOME/bin/javac -cp $CLASSPATH CreateWebSource.java # Run MW_HOME/JROCKIT_HOME/jre/bin/java -cp $CLASSPATH CreateWebSource $@
To run the script, include these arguments on the command line:
webServiceURL: The Web Service URL for the Administration API in the following format. Replace host:port
with the appropriate values.
http://host:port/search/api/admin/AdminService
userName: The administrative user (searchsys
).
password: The password for the administrative user.
webSourceURL: The starting URL for crawling the Web source.
This command creates a source from the example.com Web site:
sh compileAndRun.sh http://host:7777/search/api/admin/AdminService searchsys password http://example.com/index.htm