惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Exploit Database - CXSecurity.com
N
News and Events Feed by Topic
Latest news
Latest news
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
IT之家
IT之家
V
V2EX
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
Cisco Talos Blog
Cisco Talos Blog
K
Kaspersky official blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
小众软件
小众软件
A
Arctic Wolf
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
G
GRAHAM CLULEY
罗磊的独立博客
T
Tor Project blog
C
Cisco Blogs
美团技术团队
博客园 - Franky
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
T
Threat Research - Cisco Blogs
Cyberwarzone
Cyberwarzone
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
有赞技术团队
有赞技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Security Latest
Security Latest
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
Spread Privacy
Spread Privacy
J
Java Code Geeks
C
CERT Recently Published Vulnerability Notes
大猫的无限游戏
大猫的无限游戏
S
Securelist
The Cloudflare Blog
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
Project Zero
Project Zero

博客园 - josson

JAVA写文件到FTP的两种方法(转) - josson - 博客园 Linux的一些命令 如何实时查看mysql当前连接数? JavaScript/Jscript核心语言对象扩充函数 (收藏)Turbo C 2.0、Borland C++库函数及用例 - josson (收藏)C库函数手册 MySQL的大小写敏感设置 ORACLE应用经验-表空间 Linux中通过locale来设置字符集 Oracle字符集问题总结 Oracle 表空间相关命令常识 定时执行的SQL脚本 ORACLE常识_关于SQLPLUS Web Service 入门之常识 RMI入门 常用正则表达式 一些javascript脚本 文本模式启动linux vi 命令说明
Axis开发之Stubs方式
josson · 2005-12-13 · via 博客园 - josson

1、建立代理接口文件
public interface ISendSms extends java.rmi.Remote {
    public String getUser(String id,String type);
}

转到在目录..\WebRoot\WEB-INF\classes下:

2、生成client stub文件, 生成SendSms.wsdl文件
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.Java2WSDL -oSendSms.wsdl -lhttp://localhost:8080/websms/services/SendSms -n"urn:SendSms" -p"sample.webservice" "urn:SendSms" sample.webservice.ISendSms

生成的SendSms.wsdl文件中,参数名称默认为in1,in2等,需要改成相应的名称。

3、生成client stub
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true -Nurn:SendSms sample.webservice SendSms.wsdl

生成的文件列表如下:
deploy.wsdd
undeploy.wsdd
ISendSms.java
ISendSmsService.java
ISendSmsServiceLocator.java
SendSmsSoapBindingImpl.java
SendSmsSoapBindingSkeleton.java
SendSmsSoapBindingStub.java

4、布署服务,在WEB-INF目录下生成server-config.wsdd文件, 随Tomcat启动自动加载里面定义的服务
转到目录..\WebRoot\WEB-INF\classes\sample\webservice下
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/websms/services/AdminService deploy.wsdd

在Axis里书写deploy.wsdd并利用org.apache.axis.client.AdminClient发布,其主要工作就是把<service>标签中的内容添加在server-config.wsdd里,所以一般直接编辑server-config.wsdd文件会更方便一些。不过当你还没有server-config.wsdd文件时,使用deploy.wsdd的方法会更方便些,因为AdminClient会帮你生成一些额外的xml元素(<handler>等等),而这些元素是必要的。

5、项目中加入Axis所需的包, web.xml加入相关定义
  <display-name>Apache-Axis</display-name>
  <servlet>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>
        org.apache.axis.transport.http.AxisServlet
    </servlet-class>
  </servlet>
  <servlet>
    <display-name>Axis Admin Servlet</display-name>
    <servlet-name>AdminServlet</servlet-name>
    <servlet-class>
        org.apache.axis.transport.http.AdminServlet
    </servlet-class>
    <load-on-startup>100</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

通过http://localhost:8080/websms/services/SendSms?wsdl来查看WSDL描述了

6、测试代码
public static void main(String[] args) {
  try{
  /*ISendSmsService service = new ISendSmsServiceLocator();
   ISendSms sender = service.getSendSms();
   String result = sender.send("cid","cname");
   System.out.println("call result:"+result);*/
   String tvServiceURL = "http://localhost:8080/websms/services/SendSms"; //web service 地址
   java.net.URL endpointURL = new java.net.URL(tvServiceURL);
   String result = "ok";
   result = new SendSmsSoapBindingStub(endpointURL,null).send("id","cname");
   System.out.println("call result:"+result);
  }
  catch(Exception ex){
   ex.printStackTrace();
  }
 }

我们还可以通过IE浏览器直接调用服务,方法是在服务URL后加“method=xxx”,其中xxx是要调用的方法名称。例如可以通过http://localhost:8080/websms/services/SendSms?method=send&userId=uid&...调用方法。
====================================================================================
另外,  也可能过新建一个deploy.wsdd文件,通过这个文件直接布署我们的服务
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/websms/services/SendSms deploy.wsdd
// 它会在WEB-INF目录生成server-config.wsdd文件, 若此文件已存在, 它会在文件加入当前服务的注册。

生成wsdl文件
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.Java2WSDL -oSendSms.wsdl -lhttp://localhost:8080/websms/services/SendSms -nsendsms sample.webservice.SendSms

生成客户端文件
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.WSDL2Java SendSms.wsdl -p client