首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

AXIS第一课:最简略的AXIS发布webservice

2012-12-18 
AXIS第一课:最简单的AXIS发布webservice?????? Service service new Service() //创建一个Service实例,

AXIS第一课:最简单的AXIS发布webservice

?????? Service service = new Service(); //创建一个Service实例,注意是必须的!
?????? Call???? call??? = (Call) service.createCall();//创建Call实例,也是必须的!

???? call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置

??????? call.setOperationName( "sayHello" );//注意方法名与HelloWorld.java中一样!!

???????? String res = (String) call.invoke( new Object[] {} );//返回String,没有传入参数

???????????????????????? System.out.println( res );
?? }
}

注意项目中要导入其自带的AXIS包(当然应该把其中JAR文件替换一下),可以看到程序返回了 "HELLO WORLD!"

可以看到在AXIS里发布服务其实是一件很容易的事,这是因为这个服务很简单的原因。

2,Dynamic Proxy动态代理方式

1、将HelloWorld.java编译成HelloWorld.class,放到%TOMCAT_HOME%\webapps\axis\WEB-INF\classes

????? 下

2、在%TOMCAT_HOME%\webapps\axis\WEB-INF下新建deploy.wsdd文件,即SOAP服务发布描述文件

???? 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="sayHello"/>
??? </service>
</deployment>

在DOS下转换目录到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd

你会发现目录下多了一个server-config.wsdd文件,这就是AXIS的配置文件,以后所有的服务发布描述都会在里面找到。(当然,你可以直接修改它,不用再写deploy.wsdd)然后打开浏览器http://localhost:8080/axis/servlet/AxisServlet,你就会看到你的服务已发布

同样用客户端程序访问一下:(注意和上边的差别!!)

HelloClient.java

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class HelloClient
{
?? public static void main(String [] args) throws Exception {

?????? String endpoint = "http://localhost:" +"8080"+ "/axis/services/HelloWorld";//注意!差别仅仅在这里!!

?????? Service service = new Service();
?????? Call???? call??? = (Call) service.createCall();
?????? call.setTargetEndpointAddress( new java.net.URL(endpoint) );
??????? call.setOperationName("sayHello" );

???????? String res = (String) call.invoke( new Object[] {} );

???????????????????????? System.out.println( res );
?? }
}

对于有自定义的参数的客户端调用方式如下:

String endpoint = "http://192.168.0.3/DataManager/services/User";
??? Service service= new Service();
??? Call call= (Call)service.createCall();?
??? call.setTargetEndpointAddress(new java.net.URL(endpoint));
??? call.setOperationName("addUser");??

//前面都一样,但是这里加了一段注册参数类型的说明,如果有多个自定义参数只需要要复制这段代码,

//再修改参数就行了。
??? QName qn = new QName("urn:beanservice", "User");
??? call.registerTypeMapping(User.class, qn,????
????? new BeanSerializerFactory(User.class, qn),????
????? new BeanDeserializerFactory(User.class, qn));

???????? User user = new User();
???????? user.setClass_("U");
???????? user.setName_("annlee");
???????? user.setEmail_("1@163.com");
???????? user.setSeq_(new Integer(65546));
???????? user.setPassword_("password");
???????? user.setEnabled_("Y");
???????? user.setDisplayname_("李飞虎");
???
??? String result=(String )call.invoke(new Object[]{user});

好了,相信你对AXIS已有了大致的了解。接下来将会涉及到Stub方式调用,及AXIS的安全问题,AOP编程方面的知识。

热点排行