wood burning stoves 2.0*
The moose likes Web Services and the fly likes how to compile and run a SAAJ client without ANT Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Web Services
Bookmark "how to compile and run a SAAJ client without ANT" Watch "how to compile and run a SAAJ client without ANT" New topic
Author

how to compile and run a SAAJ client without ANT

ranjan chy
Greenhorn

Joined: Jul 25, 2004
Posts: 1
Hi,

I am new to SAAJ. I could run the sample "MyUddiPing" example given in the sun j2ee tutorial-using 'asant'. but when I try to run the same application as a standalone program(with out the use of any ant tool), I am able to compile the code but when I run the application I get the following exception:

C:\uddi>java MyUddiPing
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/internet/P
arseException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:1610)
at java.lang.Class.getConstructor0(Class.java:1922)
at java.lang.Class.newInstance0(Class.java:278)
at java.lang.Class.newInstance(Class.java:261)
at javax.xml.soap.FactoryFinder.newInstance(Unknown Source)
at javax.xml.soap.FactoryFinder.find(Unknown Source)
at javax.xml.soap.MessageFactory.newInstance(Unknown Source)
at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.<init>(HttpS
OAPConnection.java:53)
at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory.creat
eConnection(HttpSOAPConnectionFactory.java:25)
at MyUddiPing.main(MyUddiPing.java:33)


a. HOw can I run this programor any SAAJ client(the code is given below) with out the use of any ANT tool

b. I intend to develop a webservice using AXIS. then I intend to write a standalone SAAJ client that communicates with the Webservice-any suggestions

cheers

Ranjan (code follows)


import javax.xml.soap.*;
import java.net.*;
import java.util.*;
import java.io.*;

public class MyUddiPing {

public static void main(String[] args) {
try {


// Retrieve settings from uddi.properties file,
// add to system properties
Properties myprops = new Properties();

myprops.load(new FileInputStream("uddi.properties"));
Properties props = System.getProperties();

Enumeration enum = myprops.propertyNames();
while (enum.hasMoreElements()) {
String s = (String) enum.nextElement();
props.setProperty(s, myprops.getProperty(s));
}






// Create connection and message factory
SOAPConnectionFactory soapConnectionFactory =
SOAPConnectionFactory.newInstance();
SOAPConnection connection =
soapConnectionFactory.createConnection();
MessageFactory messageFactory =
MessageFactory.newInstance();

// Create a message
SOAPMessage message =
messageFactory.createMessage();

// Get the SOAP header and body from the message
// and remove the header
SOAPHeader header = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
header.detachNode();

// Create a SOAP factory
// Create a UDDI v2 find_business body element
SOAPFactory soapFactory =
SOAPFactory.newInstance();
SOAPBodyElement findBusiness =
body.addBodyElement(soapFactory.createName(
"find_business", "",
"urn:uddi-org:api_v2"));
findBusiness.addAttribute(soapFactory.createName(
"generic"), "2.0");
findBusiness.addAttribute(soapFactory.createName(
"maxRows"), "100");
SOAPElement businessName =
findBusiness.addChildElement(
soapFactory.createName("name"));
businessName.addTextNode("food");

message.saveChanges();

// Display the message you are sending
System.out.println("\n--- Request Message ---\n");
message.writeTo(System.out);


URL endpoint = new URL("http://uddi.ibm.com/testregistry/inquiryapi");


// Send message and get reply
SOAPMessage reply =
connection.call(message, endpoint);

System.out.println("\n\nReceived reply from: " +
endpoint);
System.out.println("\n---- Reply Message ----\n");

// Display the reply
reply.writeTo(System.out);

// Now parse the reply
SOAPBody replyBody = reply.getSOAPBody();

/*
* The response to a find_business query is a
* businessList conformant to the UDDI V2 Data
* Structure specifications.
*/
System.out.println("\n\nContent extracted from " +
"the reply message:\n");

Iterator businessListIterator =
replyBody.getChildElements(
soapFactory.createName("businessList",
"", "urn:uddi-org:api_v2"));

/*
* businessList is a mandatory element in a
* successful response and appears only once.
*/
SOAPBodyElement businessList =
(SOAPBodyElement)businessListIterator.next();

/*
* Get the businessInfos element. This contains
* the business entries retrieved that match the
* criteria specified in the find_business
* request.
*/
Iterator businessInfosIterator =
businessList.getChildElements(
soapFactory.createName("businessInfos",
"", "urn:uddi-org:api_v2"));

/*
* businessInfos, too is a mandatory element in
* a successful response and appears only once.
*/
SOAPElement businessInfos =
(SOAPElement)businessInfosIterator.next();

/*
* The businessInfos contains zero or more
* businessInfo structures. Each businessInfo
* structure contains the company name and
* optional description data.
*/
Iterator businessInfoIterator =
businessInfos.getChildElements(
soapFactory.createName("businessInfo",
"", "urn:uddi-org:api_v2"));

if (! businessInfoIterator.hasNext()) {
System.out.println("No businesses found " +
"matching the name \"" + args[1] +
"\".");
} else {
while (businessInfoIterator.hasNext()) {
SOAPElement businessInfo = (SOAPElement)
businessInfoIterator.next();
// Extract name and description from the
// businessInfo
Iterator nameIterator =
businessInfo.getChildElements(
soapFactory.createName("name",
"", "urn:uddi-org:api_v2"));
while (nameIterator.hasNext()) {
businessName =
(SOAPElement)nameIterator.next();
System.out.println("Company name: " +
businessName.getValue());
}
Iterator descriptionIterator =
businessInfo.getChildElements(
soapFactory.createName(
"description", "",
"urn:uddi-org:api_v2"));
while (descriptionIterator.hasNext()) {
SOAPElement businessDescription =
(SOAPElement)
descriptionIterator.next();
System.out.println("Description: " +
businessDescription.getValue());
}
System.out.println("");
}
}

// Close the connection
connection.close();

} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Lasse Koskela
author
Sheriff

Joined: Jan 23, 2002
Posts: 11962
    
    5
Apparently you're missing some dependencies from your classpath. Check out the Ant script to see which libraries it includes in the classpath when running the example (the error you're getting implies that you need at least some JavaMail libraries).


Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Kevin parera
Greenhorn

Joined: Sep 16, 2003
Posts: 4
Hi,

The runtime environment for sending/Receving SOAP request requires quite a few jars in the classpath.

I guess, Your classpath is missing out mail.jar and activation.jar.
plz add those.

Thanks
-Kevin
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: how to compile and run a SAAJ client without ANT
 
Similar Threads
How to pass complex type parameter in web service while creating it through SAAJ
ayyappa1
webservice package javax.xml.soap does not exist
Getting Bad Response from Web service
SOAP web service