MetaService 1.0 : Creating a JSP Client

Creating a Java client that consumes the MetaService is easy. There are many ways to achieve workable results, your choice for one may depend on your existing environment or IDE.

We've tested Axis, Axis2, JAX-RPC and JAX-WS/Metro, in Netbeans and Eclipse with Tomcat 6 and Glassfish 2 and 3. Below are 2 different approaches to consuming the MetaService.


Edit

Creating a client with the NetBeans IDE

NetBeans 6.5 has excellent support for consuming webservices, by default proxies are generated in a JAX-WS/Metro environment and this makes creating a functional client extremely straight forward.


Here's a sample that finds all webcasts available to "testusername", and then retrieves the metadata for the first result.

<%@page import="com.companywebcast.schemas.pulse.metaservice.v1.*" %> <%@page import="javax.xml.datatype.XMLGregorianCalendar" %> <%@page import="java.util.List" %> <%@page import="javax.xml.ws.Holder" %> <% try {

String username = "testusername"; String password = "testpassword";

// create the client MetaService client = new MetaService_Service().getBasicHttpBindingMetaService();

// set up the search parameters String ownerName = ""; String topicTitle = ""; String speakerLastName = ""; String webcastTitle = ""; XMLGregorianCalendar periodFrom = null; XMLGregorianCalendar periodTo = null; List> status = null; Integer pageNumber = Integer.valueOf(0); Integer pageSize = Integer.valueOf(100);

//these holders will contain the response from the MetaService after we call it Holder SearchResultHolder = new Holder(); Holder SummariesHolder = new Holder();

//call the MetaService client.webcastSearch(username, password, ownerName, topicTitle, speakerLastName, webcastTitle, periodFrom, periodTo, status, pageNumber, pageSize, SearchResultHolder, SummariesHolder);

Integer SearchResult = SearchResultHolder.value; WebcastSummaries Summaries = SummariesHolder.value;

// set up the get parameters String code= Summaries.getWebcastSummary().get(0).getCode(); String language = Summaries.getWebcastSummary().get(0).getLanguages().getString().get(0);

//these holders will contain the response from the MetaService after we call it Holder GetResultHolder = new Holder(); Holder WebcastHolder = new Holder();

//call the MetaService client.webcastGet(username, password, code, language, GetResultHolder, WebcastHolder);

Integer GetResult = GetResultHolder.value; Webcast Webcast = WebcastHolder.value;

} catch (Exception ex) { //TODO } %>


An important note is that JAX-WS/Metro is a standard component of Glassfish v2, but Glassfish v3 and other application servers like Tomcat need JAX-WS/Metro to either be upgraded to the full version, or seperately installed for your application server. For Glassfish v3 you can use its updatetool to install the "Metro Web Services Stack". For Tomcat 5 and 6 this page explains the procedure.

Edit

Creating a client with the Eclipse IDE for Java EE Developers

Eclipse by default seems to use Axis for generating a web service client, so let's see how we can get it to work with the MetaService.


Eclipse generated proxy code for us, and we can now use it like this:

<%@page import="com.companywebcast.schemas.pulse.metaservice.v1.*" %> <%@page import="com.companywebcast.schemas.pulse.metaservice.v1.holders.*" %> <%@page import="java.util.Calendar" %> <%@page import="javax.xml.rpc.holders.IntegerWrapperHolder"%> <%

try { String username = "testusername"; String password = "testpassword"; MetaServiceProxy client = new MetaServiceProxy();

String ownerName = ""; String topicTitle = ""; String speakerLastName = ""; String webcastTitle = ""; Calendar periodFrom = null; Calendar periodTo = null; String[] status = null; Integer pageNumber = Integer.valueOf(0); Integer pageSize = Integer.valueOf(100); IntegerWrapperHolder SearchResultHolder = new IntegerWrapperHolder(); WebcastSummariesHolder SummariesHolder = new WebcastSummariesHolder(); client.webcastSearch(username, password, ownerName, topicTitle, speakerLastName, webcastTitle, periodFrom, periodTo, status, pageNumber, pageSize, SearchResultHolder, SummariesHolder); Integer SearchResult = SearchResultHolder.value; WebcastSummary[] Summaries = SummariesHolder.value;

String code= Summaries0.getCode(); String language = Summaries0.getLanguages()0; IntegerWrapperHolder GetResultHolder = new IntegerWrapperHolder(); WebcastHolder WebcastHolder = new WebcastHolder(); client.webcastGet(username, password, code, language, GetResultHolder, WebcastHolder); Integer GetResult = GetResultHolder.value; Webcast Webcast = WebcastHolder.value; } catch (Exception ex) { //TODO } %>