摘自:http://www.blogjava.net/pdw2009/archive/2007/10/25/155889.html
axis常见问题及解决办法参考这里
http://www.ibm.com/developerworks/cn/webservices/ws-axisfaq/
根据wsdl开成webservice的java客户 例子:
1、执行以下命令生成客户端代码
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl
该命令的参数格式
从最简单的开始 ,-uri 指定wsdl文件
> WSDL2Java -uri currencyConvert.wsdl
-d 使用不同的data binding方法
> WSDL2Java -uri currencyConvert.wsdl -d xmlbeans
-a 生成异步的方法
> WSDL2Java -uri currencyConvert.wsdl -a
-t 生成测试case
> WSDL2Java -uri currencyConvert.wsdl -t
稍微复杂一些的,-p可以指定生成的package,-o指定生成的路径,-ss生成服务端代码
wsdl2java -uri ../wsdl/currencyConvert.wsdl -o ../gen_src -ss -sd -g -p
foo.bat2、生成代码的使用
package localhost.axis.pdw_jws;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
public class clientTest {
public static void main(String[] args) throws ServiceException,
RemoteException {
PdwService service=new PdwServiceLocator();
Pdw p=service.getpdw();
int count=p.add(3,4);
System.out.println(count);
System.out.println(p.sub(4,6));
}
} 开发环境地的建立和以往一样,把例子中的classes的文件打包成jar,放到开发环境,就可能了。
这是我3年前写的,在myeclipse中进行axis开发的文件
http://www.54bk.com/user1/6324/archives/2005/22197.html
最近复习写的代码
server-config.xml 代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/
"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java
">
<globalConfiguration>
<parameter name="adminPassword" value="admin"/>
<parameter name="attachments.Directory"
value="D:\resin-pro-3.1.0\webapps\axis\WEB-INF\attachments"/>
<parameter name="attachments.implementation"
value="org.apache.axis.attachments.AttachmentsImpl"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="axis.sendMinimizedElements" value="true"/>
<requestFlow>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="session"/>
</handler>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="request"/>
<parameter name="extension" value=".jwr"/>
</handler>
</requestFlow>
</globalConfiguration>
<handler name="LocalResponder"
type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="Authenticate"
type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<handler name="URLMapper"
type="java:org.apache.axis.handlers.http.URLMapper"/>
<transport name="local">
<responseFlow>
<handler type="LocalResponder"/>
</responseFlow>
</transport>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
<handler
type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</requestFlow>
</transport>
<handler name="soapmonitor"
type="java:org.apache.axis.handlers.SOAPMonitorHandler">
<parameter name="wsdlURL"
value="/axis/SOAPMonitorService-impl.wsdl"/>
<parameter name="namespace"
value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/
>
<parameter name="serviceName" value="SOAPMonitorService"/>
<parameter name="portName" value="Demo"/>
</handler>
<handler name="logHandler"
type="java:webservices.handlers.LogHandler">
<parameter name="filename" value="c:\\axislog.txt"/>
</handler>
<handler name="authorHandler"
type="java:webservices.handlers.AuthenticationHandler"/>
<service name="SOAPMonitorService" provider="java:RPC">
<parameter name="allowedMethods" value="publishMessage"/>
<parameter name="className"
value="org.apache.axis.monitor.SOAPMonitorService"/>
<parameter name="scope" value="Application"/>
</service>
<service name="Version" provider="java:RPC">
<parameter name="allowedMethods" value="getVersion"/>
<parameter name="className"
value="org.apache.axis.Version"/>
</service>
<service name="AdminService" provider="java:MSG">
<parameter name="allowedMethods" value="AdminService"/>
<parameter name="enableRemoteAdmin" value="false"/>
<parameter name="className"
value="org.apache.axis.utils.Admin"/>
<namespace>http://xml.apache.org/axis/wsdd/</namespace>
</service>
<service name="MyServices" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="allowedRoles" value="peidw"/><!-- 验证规则
-->
<parameter name="className"
value="webservices.MyServices"/>
<beanMapping languageSpecificType="java:domain.Book"
qname="ns:Book" xmlns:ns="urn:BeanService" />
<beanMapping languageSpecificType="java:domain.Student"
qname="ns:Student" xmlns:ns="urn:StudentService" />
<requestFlow>
<handler type="logHandler"/>
</requestFlow>
</service>
</deployment>myservice.java
package webservices;
import domain.Book;
import domain.Student;
import java.util.*;
public class MyServices {
static Map map=new HashMap();
static{
map.put("125-6922-10", new
Book("Structs程序设计","孙卫琴","125-6922-10"));
map.put("125-6922-11", new Book("Think in
Java","孙卫琴","125-6922-11"));
map.put("125-6922-12", new
Book("C++程序高驻地","小张","125-6922-12"));
map.put("125-6912-59", new Book("CSS实践手册","小李","125-6912-59"));
map.put("125-6992-55", new
Book("XML入门到精通","小裴","125-6992-55"));
} public Book getBookByIsbn(String isbn){
Book result=null;
if(map.containsKey(isbn)){
return (Book) map.get(isbn);
}
return result;
} public List getBookList(){
List result=null;
Set set=map.entrySet();
result=new ArrayList();
result.addAll(set);
return result;
} public Book[] getBookArray(){
List tmp_list=getBookList();
return (Book[]) tmp_list.toArray();
} public Map getAllBookMap(){
return map;
} public Student getStudent(){
return new Student("小裴","kkk@tom.com
","
广西合浦西场裴屋村");
}
}两个handler
package webservices.handlers;
import org.apache.axis.AxisFault;
import org.apache.axis.Handler;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import org.apache.commons.lang.*;
import java.io.*;
import java.util.*;
public class LogHandler extends BasicHandler{
public void invoke(MessageContext arg0) throws AxisFault {
Handler handler=arg0.getService();
String logfilename=(String)this.getOption("filename");
if(StringUtils.isEmpty(logfilename)){
throw new AxisFault("日志文件不能为空","",null,null);
}
try {
FileOutputStream fos=new
FileOutputStream(logfilename,true);
PrintWriter pw=new PrintWriter(fos);
Date date=new Date();
arg0.getMessage().writeTo(System.out);
String result="---";
pw.println(result);
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package webservices.handlers;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import org.apache.axis.security.SecurityProvider;
import org.apache.axis.security.simple.SimpleSecurityProvider;
import org.apache.axis.session.Session;
public class AuthenticationHandler extends BasicHandler{
public void invoke(MessageContext arg0) throws AxisFault {
SecurityProvider provider =
(SecurityProvider)arg0.getProperty("securityProvider");
if(provider==null){
provider= new SimpleSecurityProvider();
arg0.setProperty("securityProvider", provider); }
if(provider!=null){
String userId=arg0.getUsername();
String password=arg0.getPassword();
//对用户进行认证,如果authUser==null,表示没有通过认证,抛出Server.Unauthenticated异常。
Session session=arg0.getSession();
System.out.println("----------===xx----------------");
org.apache.axis.security.AuthenticatedUser authUser
= provider.authenticate(arg0);
if(authUser==null)
throw new AxisFault("Server.Unauthenticated","用户验证异常",
null,null);
//用户通过认证,把用户的设置成认证了的用户。
arg0.setProperty("authenticatedUser", authUser);
}
}
}
客户端例子
package test;
import wsclient.myservices.*;
import java.net.URL;
import java.util.*;
import javax.xml.namespace.QName;
import org.apache.axis.client.*;
import org.apache.wsif.*;
import org.apache.wsif.wsdl.AuthenticatingProxyWSDLLocatorImpl;
public class MyServiceExe {
public static void handlerCallDemo()throws Exception{
MyServicesService ms=new MyServicesServiceLocator();
MyServices_PortType msp=ms.getMyServices();
Book book=msp.getBookByIsbn("125-6922-10");
System.out.println(book.getAuthor()+"-"+book.getBookname()+"-"+book.getIsbn());
Map map=msp.getAllBookMap();
Set keyset=map.keySet();
Iterator it=keyset.iterator();
String tmp=null;
while(it.hasNext()){
tmp=(String)it.next();
System.out.println(tmp);
}
}
public static void dynamicCall()throws Exception{
String endpoint_1="http://localhost:8000/axis/services/Version?wsdl
";
Service service = new Service();
Call call=(Call)service.createCall();
call.setOperationName(new QName(endpoint_1,"getVersion "));
call.setTargetEndpointAddress(new URL(endpoint_1));
String result=(String)call.invoke(new Object[]{});
System.out.println("result="+result);
}
public static void wsifCall()throws Exception {
String url="http://localhost:8000/axis/services/Version?wsdl
";
WSIFServiceFactory factory=WSIFServiceFactory.newInstance();
//如果调用的方法需要进行用户/密码校验,需执行下面代码
//AuthenticatingProxyWSDLLocatorImpl awsli=new
AuthenticatingProxyWSDLLocatorImpl(url,"gaolong1","19831001"); //验证连接
WSIFService service=factory.getService(url,"http://localhost:8000/axis/services/Version","VersionService","http://localhost:8000/axis/services/Version","Version
");
WSIFPort port = service.getPort();
WSIFOperation operation =
port.createOperation("getVersion","getVersionRequest",null);//根据给定的操作名称参
数operationName,输入元素名称inputName,输出元素名称
WSIFMessage input = operation.createOutputMessage();//设置输入参数
WSIFMessage output = operation.createOutputMessage();//设置输出参数
WSIFMessage fault = operation.createFaultMessage(); //异常信息
operation.executeRequestResponseOperation(input,output,fault);
//执行请求
System.out.println(output.getObjectPart("getVersionReturn"));
}
public static void main(String[] args)throws Exception{
handlerCallDemo();
dynamicCall();
wsifCall();
}
}
分享到:
相关推荐
在网上找了很久的资料,接口已经跟客户对接,特编写了代码文档和附带jar包,并含其他网站的参考地址,注意jdk环境要1.6或以上版本
A8 平台提供基于 axis2 1.4 实现的标准 Web service。可以采取多种语言多种方式进行客户端开发。 本指南提供了 Java 和 C#的开发步骤,PHP 建议使用 WSO2 Web Services Framework for PHP 开发。 本指南所有 Java ...
21.2 实例——利用AXIS开发一个简单的Web Service 310 21.3 小结 314 第22章 Java EE的安全 315 22.1 利用JAAS进行验证和授权 315 22.2 利用JSSE进行安全传输 317 22.3 小结 317 第23章 Java EE的测试 ...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...