I have a very simple soap web service that I need to consume from a Java client. What is the easiest way to accomplish this without using any third party libraries? A requirement is that the host anhd port is read from the web.xml before every call to the ws.
Without using any third party libraries? Get to know the SOAP standard really well and learn to love SAX.
If you can't love SAX, then lax your no-third-party-libs requirement and use StAX (with woodstox) instead.
This approach might be the "easiest" (considering the no-third-party-libs requirement) but I don't think it will be easy.
If youo can relax your "no 3rd party libraries" requirement, and you have a WSDL for the web service then Axis makes it really easy. Just compile the WSDL using wsdl2java, and you can use the generated Java classes to consume the web service.
hi there,
depending on which version of JAVA you're using, some of the JAX-WS is built into it. JDK 6 has java's JAX-WS standard implementation and you could just use it.
SEE the following
http://weblogs.java.net/blog/ramapulavarthi/archive/2008/01/jaxws_21_and_ja.html
http://www.netbeans.org/kb/60/websvc/jax-ws.html -- tutorial to use the JDK built-in JAX-WS for deploying and consuming a web service.
BR, ~A
I can recommend you CXF library. Using it you will have several options for calling web services:
use dynamic proxy for calling
DynamicClientFactory dcf = DynamicClientFactory.newInstance(); Client client = dcf.createClient("http://admin:password@localhost:8080/services/MyService?wsdl"); Object[] a = client.invoke("test", ""); System.out.println(a);
using Java stub generated from wsdl
if your server was created using CXF you can reuse your code:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setUsername("admin"); factory.setPassword("password");
factory.setAddress("http://admin:password@localhost:8080/services/MyService"); factory.setServiceClass(ITest.class); IDictionaryCurrency client = (ITest) factory.create(); client.test();