WebService
Die hier gezeigte Lösung lief auf mehreren Servern gleichermaßen und ohne weitere Pakete einbinden zu müssen.
<code=java> package webTest;
import javax.jws.*;
import javax.jws.soap.*;
import java.util.*; /**
* * @author seann */
@WebService @SOAPBinding(style = SOAPBinding.Style.DOCUMENT) public interface WebTest {
@WebMethod public ArrayList<String> check(ArrayList<String> list);
} </code=java>
<code=java>
package webTest;
import javax.jws.soap.*; import javax.xml.ws.soap.*; import javax.jws.*; //import javax.ejb.*;
import java.util.*;
/**
* * @author seann */
@WebService(serviceName="WebTestService"
,portName="WebTestPort"
,endpointInterface="webTest.WebTest"
,targetNamespace="http://webTest"
)
//@Stateless public class DefaultWebTest implements WebTest {
public ArrayList<String> check( ArrayList<String> list)
{
list.add("return");
return list;
}
}
</code=java>
<code=java> package webTest;
import javax.xml.ws.Endpoint; import javax.servlet.*;
/**
* * @author seann */
@javax.servlet.annotation.WebListener public class AppServletContextListener implements javax.servlet.ServletContextListener {
Endpoint endpoint = null;
public void contextInitialized(ServletContextEvent sce)
{
String url = sce.getServletContext().getInitParameter("url");
//Endpoint.publish("{protocol}://{host}:{port}/{context}/{wsName}", new DefaultWebTest());
if(url != null)
{
endpoint = Endpoint.publish(url, new DefaultWebTest());
}
else
{
endpoint = Endpoint.publish("http://:6038/WebTest/WebTestService", new DefaultWebTest());
}
}
public void contextDestroyed(ServletContextEvent sce)
{
endpoint.stop();
}
}
</code=java>
<code=xml> <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <param-name>url</param-name> <param-value>http://:8080/blupp</param-value> </context-param> <servlet> <servlet-name>WebTestService</servlet-name> <servlet-class>webTest.DefaultWebTest</servlet-class> </servlet> <servlet-mapping> <servlet-name>WebTestService</servlet-name> <url-pattern>/WebTestService</url-pattern> </servlet-mapping> <listener> <listener-class>webTest.AppServletContextListener</listener-class> </listener> <session-config> <session-timeout> 30 </session-timeout> </session-config>
</web-app> </code=xml>
<code=java>
package webtestclient;
import java.net.URL;
import java.util.ArrayList;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
/**
* * @author seann */
public class WebTestClient {
public WebTestClient()
{
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
// TODO code application logic here
WebTestClient client = new WebTestClient();
client.connect();
}
public void connect()
{
try {
String serviceName = "WebTestService";
String servicePort = "WebTestPort";
String url = "http://:6040/WebTest/WebTestService";
url = "http://:8080/blupp";
//url = "http://localhost:8041/axis2/services/WebTestService?wsdl";
String namespace = "http://webTest";
Service service = Service.create(new URL(url + "?wsdl") , new QName(namespace , serviceName));
webTest.WebTest proxy = service.getPort(new QName(namespace, servicePort), webTest.WebTest.class);
ArrayList<String> list = new ArrayList<String>();
list.add("start");
ArrayList<String> result = proxy.check(list);
//ArrayList<String> result = ((webTest.WebTest)proxy).check(list);
if(result.size() > 0)
{
for(int index = 0; index < result.size(); index++)
{
System.out.println(result.get(index));
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
} </code=java>
