学习webservice

来源:互联网 发布:tomcat8w java options 编辑:程序博客网 时间:2024/05/17 01:56

AXIS到appach的官网。就可以下到,顺便把源码也下了,对学习和调试很有帮助。 http://www.apache.org/dyn/closer.cgi/ws/axis/1_4 mail.jar(这个不知道是不是必须的) http://java.sun.com/products/javamail/javamail-1_1_3.html

还有tomcat就不用说了

将axis-bin-1_4的axis-1_4webapps目录下的axis包拷贝到tomcat的web发布目录下(一般是webapps)。

 将Activation.jar(在axis的源码包内可以找到),mail.jar,tools.jar(在jdk的目录下可以找到)。拷贝到发布在tomcat下的axis的WEB-INFlib下。

准备工作基本完成。

测试连接http://localhost:8080/axis/ 点击Validate 如果Needed Components下全部是found基本就没问题了。

写一个简单的例子    

public class HelloWorld { 

public String sayHello(String name) {

  return "Hello " + name+" welcome to Webservice ";  

}

}

方法1 最简单的测试方法,将这个。java文件拷贝到axis目录下,

然后再测试连接http://localhost:8080/axis/HelloWorld.jws

就可以了。

方法2 还有就是比较通用的将编译过的class文件拷贝到axisWEB-INFclasses。

编写一个wsdd deploy.wsdd

 <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">   

<service name="HelloWorld" provider="java:RPC">       

<parameter name="className" value="HelloWorld"/>      

  <parameter name="allowedMethods" value="*"/>   

</service>

</deployment>

将deploy.wsdd拷贝到 axisWEB-INF目录下,

设置环境变量    

AXIS_HOME 即axis-bin-1_4.zip解压的目录(我的是在F/:soapaxis-1_4)    AXIS_LIB    即 %AXIS_HOME%lib    AXISCLASSPATH 即 %AXIS_LIB%axis.jar;%AXIS_LIB%commons-discovery-0.2.jar;%AXIS_LIB%commons-logging-1.0.4.jar;%AXIS_LIB%jaxrpc.jar;%AXIS_LIB%saaj.jar;%AXIS_LIB%log4j-1.2.8.jar;也就是把%AXIS_LIB%下所用JAR文件都导入 在axisWEB-INF目录下运行如下命令 java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd 出现 Processing file deploy.wsdd<Admin>Done processing</Admin>表示部署成功。这时在axisWEB-INF目录下会多一个server-config.wsdd的部署文件。以后就不需要写deploy.wsdd了直接修改对应的server-config.wsdd就可以了。 测试地址http://localhost:8080/axis/servlet/AxisServlet 可以看到发布的服务和可用的方法。    再写一个通信的cilent。 import java.net.MalformedURLException;import java.net.URL;import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call;import org.apache.axis.client.Service;public class HelloWorldClient { public String client(String str) throws ServiceException,   MalformedURLException, RemoteException {  String serviceSet = "http://localhost/:8080/axis/HelloWorld.jws";//指定服务的位置, 使用于方法1 //或者使用下面的方法,   serviceSet = "http://localhost:8080/axis/services/HelloWorld";//使用于方法2  Service service = new Service();// 创建service实例  try {   Call call = (Call) service.createCall();// 创建call、   call.setTargetEndpointAddress(new URL(serviceSet));// 设置call服务的URL   call.setOperation("sayHello");// 为call设置对应的方法   String re = (String) call.invoke(new Object[] {str});    return re;  } catch (ServiceException e) {     e.printStackTrace();   throw e;  } catch (MalformedURLException e) {     e.printStackTrace();   throw e;  } catch (RemoteException e) {   e.printStackTrace();   throw e;  }  } } junit测试 import static org.junit.Assert.*; import java.net.MalformedURLException;import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import org.junit.Test; public class HelloWorldClientTest {  /**  * Test method for {@link HelloWorldClient#client(java.lang.String)}.  */ @Test public void testClient() {  HelloWorldClient client = new HelloWorldClient();  try {   String str = "strom";   String re = client.client(str);    System.out.println(re);   assertEquals("Hello " + str +" welcome to Webservice ", re);  } catch (MalformedURLException e) {   fail("Not yet implemented");  } catch (RemoteException e) {   e.printStackTrace();   fail("Not yet implemented");  } catch (ServiceException e) {   fail("Not yet implemented");  }  } }

原创粉丝点击