首页编程axis.jar,axis2对应jar的maven配备怎么解决

axis.jar,axis2对应jar的maven配备怎么解决

编程之家2023-11-0785次浏览

大家好,感谢邀请,今天来为大家分享一下axis.jar的问题,以及和axis2对应jar的maven配备怎么解决的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

axis.jar,axis2对应jar的maven配备怎么解决

axis2对应jar的maven配备怎么解决

一、使用Dependency声明

这个方法就是和其他maven的dependency一样,在pom.xml里声明一个dependency:

<dependency>

<groupId>org.ibm</groupId>

<artifactId>jms</artifactId>

axis.jar,axis2对应jar的maven配备怎么解决

<version>1.0.0</version>

<scope>system</scope>

<systemPath>${project.basedir}/lib/jms.jar</systemPath>

</dependency>

细心的人可能已经留意到了,这里多了两个声明:scope和systemPath。

二、创建一个Project范围的库

axis.jar,axis2对应jar的maven配备怎么解决

以上的方法是从避免安装lib到maven库方向上实现。另一种方法就是则是从构造库的方向上考虑的:创建一个虚拟的本地库,让maven到这个本地库里去查找需要的lib。

步骤大致如下:

1.构造虚拟Maven库

这里我们需要提供一个和maven库结构一样的文件夹/文件结构,以模拟Maven库,例如假如project里lib即是一个maven库,则它的结构可能是:

如上,虚拟库中声明了两个jar:

1. com.ibm.mq-1.0.jar: groupId是 org.ibm.jms;artifactId是com.ibm.mq;version是1.0

2. com.ibm.mqjms-1.0.jar: groupId是org.ibm.jms;artifactId是com.ibm.mqjms;version是1.0

假设以上jar是可用的maven依赖的话,那在dependency依赖里的添加项为:

<dependency>

<groupId>org.ibm.jms</groupId>

<artifactId>com.ibm.mqjms</artifactId>

<version>1.0</version>

</dependency>

<dependency>

<groupId>org.ibm.jms</groupId>

<artifactId>com.ibm.mq</artifactId>

<version>1.0</version>

</dependency>

下面的问题就是如何让Maven能找到这个虚拟Maven库。

在pom.xml里,我们使用repositories声明可能查找的、多个其他的Maven的库,例如:

<repositories>

<repository>

<releases>

<enabled>false</enabled>

<updatePolicy>always</updatePolicy>

<checksumPolicy>warn</checksumPolicy>

</releases>

<snapshots>

<enabled>true</enabled>

<updatePolicy>never</updatePolicy>

<checksumPolicy>fail</checksumPolicy>

</snapshots>

<id>codehausSnapshots</id>

<name>Codehaus Snapshots</name>

<url>http://snapshots.maven.codehaus.org/maven2</url>

<layout>default</layout>

</repository>

</repositories>

当Maven在Central库里没有找到对应的artifact,则会到这些库里去查找。所以,我们只需要如上把虚拟的Maven库的定义的添加到pom.xml里即可:

Xml代码收藏代码

<repositories>

<repository>

<id>repo</id>

<releases>

<enabled>true</enabled>

<checksumPolicy>ignore</checksumPolicy>

</releases>

<snapshots>

<enabled>false</enabled>

</snapshots>

<url>file://${project.basedir}/lib</url>

</repository>

</repositories>

这里库的路径是:${project.basedir}/lib。它是一个release库而不是snapshot库。

区别

方式一:会直接引用指定路径的lib,而不会把它加到本地的Maven库里去,所以它只在当前project使用,但工程可以方便的共享,且不使用额外的空间

方式二:引用的jars会首先被安装到本地的maven库里,然后再通过引用从本地的Maven库里加载,好处是一旦安装,在其他的project也可以引用,但是需要首先在本地安装,当前工程是便携的,但是直接引用而未如上声明的工程可能不是便携的。

有没有 axis2-1.7.4.jar

一、安装环境 J二SE SDK一.四,Tomcat 5.0,eclipse三.二。二、到中国xml.apache.org中国站下载Axis安装包。三、将Axis相关包文件放在WEB-INF\lib目录下。四、Axis可选的包:activation.jar; mail.jar; xmlsec-一.四.Beta一.jar拷贝到WEB-INF目录下,生成客户端时候需要使用。 Axis支持三种web service的部署和开发,分别为:一、Dynamic Invocation Interface(DII)二、Dynamic Proxy方式三、Stubs方式建议我们使用Stubs方式,因此我就主要就介绍一下第三种方式。注意,Java源代码是放在D:\workspace\test\目录下,Axis相关包文件放在D:\workspace\test\WEB-INF目录下

axis2客户端需要哪些jar包

1、安装环境 J2SE SDK 1.4,Tomcat 5.0,eclipse 3.2。

2、到 http://xml.apache.org网站下载Axis安装包。

3、将Axis相关包文件放在WEB-INF\lib目录下。

4、Axis可选的包:activation.jar; mail.jar; xmlsec-1.4.Beta1.jar拷贝到WEB-INF目录下,生成客户端时候需要使用。

Axis支持三种web service的部署和开发,分别为:

1、Dynamic Invocation Interface(DII)

2、Dynamic Proxy方式

3、Stubs方式

建议我们使用Stubs方式,因此我就主要就介绍一下第三种方式。

注意,Java源代码是放在D:\workspace\test\目录下,Axis相关包文件放在D:\workspace\test\WEB-INF目录下。

Axis2的具体使用

为了搞个Web Services,让我真是煞费苦心.还好最后用到了axis,在axis上发布Web Services是一件很轻松的事情.甚至不做配置的情况下都可以采用即时发布.就象JSP的发布

安装axis需要Servlet容器,我用的是Tomcat-5.0.28,下载Tomcat和axis我就不说了,下载后将axis解压后,将axis文件夹考到Tomcat的webapps下.

设置环境变量是非常重要的,设置环境变量: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%wsdl4j-1.5.1.jar;%AXIS_LIB%xml-apis.jar;%AXIS_LIB%xercesImpl.jar

设置AXIS_LIB为随便一个文件夹,将上面的一堆jar包搞进去.再将activation.jar, mail.jar, wsdl4j-1.5.1.jar搞到%CATALINA_HOME%commonlib下.

若启动Tomcat后在浏览器输入:http://localhost:8080/axis/happyaxis.jsp,若Needed Components都加载了就说明正常启动了axis.

axis支持两种发布方式:(先启动Tomcat)

1.即时发布:直接使用java语言编辑.jws文件,将它放到axis目录下.

实例:用文本编辑器编写HelloWorld.jws

public class HelloWorld

{

public String helloWorld(){

System.out.println("Hello World!");

return"Hello World!";

}

}

拷贝到axis下,在浏览器中输入:http://localhost:8080/axis/HelloWorld.jws?wsdl,若显示出相应的描述,说明发布成功,一般不会失败的,除非axis本身有问题.

2.定制发布:将编译完的.class文件放到axisWEB-INF,要包含包的文件夹.然后编写.wsdd文件,用org.apache.axis.client.AdminClient来发布

实例:编写并编译文件Capacity.java.

package samples.capacity;

public class Capacity

{

public double convertGallon2Litre(double gallon,String user){

if("Andy".equals(user))

return gallon* 4.546;

else

return 0.0d;

}

}

将Capacity.class文件拷贝到axisWEB-INFclasses下(带着文件夹拷),编写deploy.wsdd文件

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

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

<parameter name="className" value="samples.capacity.Capacity"/>

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

</service>

</deployment>

拷到Capacity.class所在的目录,在控制台切换到该目录执行:

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

显示如下信息说明发布完毕:

Processing file deploy.wsdd

<Admin>Doneprocessing</Admin>

在浏览器输入http://localhost:8080/axis/services/Capacity?wsdl,若显示描述,则说明发布成功.(好象要等一段时间才)

调用Web Services:编写AXISTest.java文件:

package axisexercise;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.XMLType;

import javax.xml.rpc.ParameterMode;

public class AXISTest

{

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

Service service= new Service();

Call call=( Call) service.createCall();

//////////访问即时发布的Distance服务

//设置访问点

call.setTargetEndpointAddress("http://localhost:8080/axis/Distance.jws");

//设置操作名

call.setOperationName("convertMile2Kilometre");

//设置入口参数

call.addParameter("op1",XMLType.XSD_DOUBLE,ParameterMode.IN);

call.setReturnType( XMLType.XSD_DOUBLE);

Double d1= new Double( 190);

//调用服务

System.out.println(d1+"英里相当于"+ call.invoke(new Object[]{d1})+"公里!");

//////////访问定制发布的Capacity服务

call=( Call) service.createCall();

//设置访问点

call.setTargetEndpointAddress("http://localhost:8080/axis/services/Capacity");

//设置操作名

call.setOperationName("convertGallon2Litre");

//设置入口参数

call.addParameter("op1",XMLType.XSD_DOUBLE,ParameterMode.IN);

call.addParameter("op2",XMLType.XSD_STRING,ParameterMode.IN);

call.setReturnType( XMLType.XSD_DOUBLE);

d1= new Double( 10.00);

String str1="ss";

//调用服务

System.out.println(d1+"加仑相当于"+ call.invoke( new Object[]{d1,str1})+"升!");

}

}

编译:javac-classpath.;%AXISCLASSPATH% AXISTest.java

执行:java-classpath.;%CATALINA_HOME%commonlibwsdl4j-1.5.1.jar;%AXISCLASSPATH% axisexercise.AXISTest

显示如下结果:

log4j:WARN No appenders could be found for logger(org.apache.axis.i18n.ProjectResourceBundle).

log4j:WARN Please initialize the log4j system properly.

190.0英里相当于 305.71公里!

10.0加仑相当于 0.0升!

若将AXISTest.java中的str1改为Andy,则接过就是45.46升

非常感谢您的阅读!我们希望本文对于解决您关于axis.jar的问题提供了一些有价值的信息。如果您还有其他疑问,我们将很乐意为您提供进一步的帮助。

百度后台登陆 百度推广后台登陆icp报备?icp报备流程,你不知道的那些事