分享
 
 
 

AXIS简单实现入门

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

http://localhost/services

http://localhost/servlet/AdminServlet

l 至 http://ws.apache.org/axis

l 下载解压*.jar至lib

l 修改web.xml如下:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"

"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">

<web-app>

<display-name>Apache-Axis</display-name>

<servlet>

<servlet-name>AxisServlet</servlet-name>

<display-name>Apache-Axis Servlet</display-name>

<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>

</servlet>

<servlet>

<servlet-name>AdminServlet</servlet-name>

<display-name>Axis Admin Servlet</display-name>

<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>

<load-on-startup>100</load-on-startup>

</servlet>

<servlet>

<servlet-name>SOAPMonitorService</servlet-name>

<display-name>SOAPMonitorService</display-name>

<servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>

<init-param>

<param-name>SOAPMonitorPort</param-name>

<param-value>8100</param-value>

</init-param>

<load-on-startup>100</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>/servlet/AxisServlet</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name><url-pattern>*.jws</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name><url-pattern>/services/*</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>SOAPMonitorService</servlet-name>

<url-pattern>/SOAPMonitor</url-pattern>

</servlet-mapping>

<!-- uncomment this if you want the admin servlet -->

<servlet-mapping>

<servlet-name>AdminServlet</servlet-name>

<url-pattern>/servlet/AdminServlet</url-pattern>

</servlet-mapping>

<!-- currently the W3C havent settled on a media type for WSDL;

http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft

for now we go with the basic 'it's XML' response -->

<mime-mapping>

<extension>wsdl</extension>

<mime-type>text/xml</mime-type>

</mime-mapping>

<mime-mapping>

<extension>xsd</extension>

<mime-type>text/xml</mime-type>

</mime-mapping>

<welcome-file-list id="WelcomeFileList">

<welcome-file>index.html</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>index.jws</welcome-file>

</welcome-file-list>

l 直接把所要发布的接口,以*.java 放入*.jws入root即ok

View the list of deployed Web services

http://localhost/servlet/AxisServlet

对*.jws访问进行url监控时我们可以很好的查看对方服务器的内部地址:

http://localhost/UNEXIST.jws 这样只能返回http 404错误

http://localhost/UNEXIST.jws?wsdl

AXIS error

Sorry, something seems to have gone wrong... here are the details:

Fault - ; nested exception is:

java.io.FileNotFoundException: h:\WSDL\defaultroot\xxx.jws (The system cannot find the file specified)

AxisFault

faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException

faultSubcode:

faultString: java.io.FileNotFoundException: h:\WSDL\defaultroot\xxx.jws (The system cannot find the file specified)

faultActor:

faultNode:

faultDetail:

l 实际编写Test.jws 到root目录

public class Test{

public String getMsg(){

System.out.println("happen act in getMsg()");

return "demo";

}

public void setMsg(String msg){

//--operation here

}

}

while compiling: h:\WSDL\defaultroot\WEB-INF\jwsClasses\Test.java

l 编写*.jws注意问题: 不能implement XXInterface,不要写package

看到效果:

http://localhost/Test.jws

表示正常,关键要WSDL能正常解析出来http://localhost/Test.jws?wsdl

There is a Web Service here Click to see the WSDL

到此步应该成功,在开始配置时有非常问题,发生在Web.xml与解析WSDL的相关正确经过几次三番成功用的是

JDK1.4+Tomcat4/WebLogic 7+Win

JDK1.3+WebLogic7+Unix tru64 5.1a

问题:

WebLogic7.1有可以,有机不行,一样建domain,总有时就不行

WebLogic7.1在Unix建domain一样copy to DefaultWebApp 就是有时不行,

根据WebServices调用之几种方法:

l http://localhost/Test.jws?method=getMsg

l http://localhost/Test.jws?method=setMsg&msg=hello

返回整个SOAP包与结果

l JBuilder8->New->Web Services->Import a Web Service:

Import A Web Service With Axis:

WSDL URL: http://localhost/Test.jws?wsdl

package: com.xxxx

生成如下类:

TestService.java

TestServiceLocator.java

TestServiceTestCase.java

Test.java

TestSoapBindingStub.java

TestSoapBindingImpl.java

还有:deploy.wsdd,undeploy.wsdd

调用:

TestService ts=new TestServiceLocator();

((TestSoapBindingStub)ts.get....).get..

该类为调用基于Microsoft SOAP的解决VC传指针引用返回内容Call远程方法后可调用StringHolder.value 取得值 javax.xml.rpc.holders.StringHolder;

l 第二种方式,用WSDL2JAVA生成本地调用

//在classpath包含6个jar文件

wsdl2java http://localhost/Test.jws?wsdl

F:\axis-1_1> set classpath=f:axis-ant.jar;f:axis.jar;f:commons-discovery.jar;f:co

mmons-logging.jar;f:jaxrpc.jar;f:log4j-1.2.8.jar;f:saaj.jar;f:wsdl4j.jar;

d:/j2sdk1.4.0/bin/java org.apache.axis.wsdl.WSDL2Java http://localho

st/Test.jws?wsdl

生成四个文件

TestService.java , TestServiceLocator.java , Test.java , TestSoapBindingStub.java

TestService test=new TestServiceLocator();

TestSoapBindingStub bind=(TestSoapBindingStub) test.getTestSoapPort();

后与jbuilder做本地调用

l 第三种方式,直接下载www.apache.org/soap 把jar包放入classpath中,编写调用代码:

import java.net.URL;

import java.util.Vector;

import java.util.Arrays;

import org.apache.soap.Constants;

import org.apache.soap.SOAPException;

import org.apache.soap.Envelope;

import org.apache.soap.Fault;

import org.apache.soap.rpc.Call;

import org.apache.soap.rpc.Response;

import org.apache.soap.rpc.Parameter;

public class HelloWorldClient {

public static void main(String args[]) {

String url = "http://localhost/Test.jws";

String remoteMethod = "setMsg";

String callers[]=new String[]{"Hello"};

try {

Call call = new Call();

call.setMethodName(remoteMethod);

Parameter params[]=new Parameter[callers.length];

for(int i=0;i<params.length;i++){

params[i]=new Parameter("callers"+i,callers[i].getClass(),callers[i],

Constants.NS_URI_SOAP_ENC);

}

Vector vect=new Vector(Arrays.asList(params)); call.setParams(vect);

Response resp = call.invoke(new URL(url), "");

if (resp.generatedFault()) {

Fault fault = resp.getFault();

System.out.println(": Call to " + remoteMethod + " returned a fault!");

System.out.println(" Fault code: " + fault.getFaultCode());

System.out.println(" Fault string: " + fault.getFaultString());

} else {

if (resp.getReturnValue() != null) {

Object result = resp.getReturnValue().getValue();

System.out.println("return" + ": " + result);

}

}

} catch (Exception exception) {

System.err.println("Error, caught exception: " + exception);

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有