Axis发布Webservice服务

一、服务端代码

1、创建Maven工程

注意pom.xml文件的配置,需要引入axis的相关包

     <dependencies>
            <!-- axis 1.4 jar start -->
            <dependency>
                <groupId>org.apache.axis</groupId>
                <artifactId>axis</artifactId>
                <version>1.4</version>
            </dependency>
            <!-- 日志引入  -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.12</version>
            </dependency>
            <dependency>
                <groupId>commons-discovery</groupId>
                <artifactId>commons-discovery</artifactId>
                <version>0.2</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.axis</groupId>
                <artifactId>axis-jaxrpc</artifactId>
                <version>1.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis</groupId>
                <artifactId>axis-saaj</artifactId>
                <version>1.4</version>
            </dependency>
            <dependency>
                <groupId>wsdl4j</groupId>
                <artifactId>wsdl4j</artifactId>
                <version>1.4</version>
            </dependency>
            <!-- axis 1.4 jar end -->
        </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <showWarnings>true</showWarnings>
                </configuration>
            </plugin>
            <!-- 运行tomcat7方法:tomcat7:run -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <!-- 指定端口 -->
                    <port>8080</port>
                    <!-- 请求路径 -->
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

2、在web.xml中配置axis的servlet

  <!-- axis 配置 -->
  <servlet>
    <servlet-name>axis</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>axis</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

 3、写一个对外发布的接口

/**
 * @author WGR
 * @create 2020/3/9 -- 20:20
 */
public interface HelloService {

    public String sayHello(String info);
}
/**
 * @author WGR
 * @create 2020/3/9 -- 20:22
 */
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String info) {
        return "sayHello:"+info;
    }
}

 

4.通过server-config.wsdd文件对外发布服务

server-config.wsdd文件存放在工程的WEB-INFO目录下(与web.xml同级目录,这个文件axis框架底层会去解析的,不用操心怎么去加载)

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

    <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
    <service name="HelloServiceImpl" provider="java:RPC">
        <parameter name="className" value="com.topcheer.axis.service.impl.HelloServiceImpl"/>
        <parameter name="allowedMethods" value="*"/>
    </service>
    <transport name="http">
        <requestFlow>
            <handler type="URLMapper"/>
        </requestFlow>
    </transport>
</deployment>

5、验证

二、客户端代码

1、仍然基于axis,建立HelloClient.java类:

/**
 * @author WGR
 * @create 2020/3/9 -- 20:46
 */
public class HelloClient {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Service service = new Service();
        try {
            Call call = (Call) service.createCall();
            //设置地址
            call.setTargetEndpointAddress("http://localhost:8080/services/HelloServiceImpl?wsdl");
            //设置要执行的方法(以下两种方式都可以)
            call.setOperationName(new QName("http://impl.service.axis.topcheer.com", "sayHello"));
            //设置要传入参数,如果没有要传入的参数,则不要写这个(参数名、参数类型、ParameterMode)
            call.addParameter("info", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
            //设置返回的类型
            call.setReturnType(org.apache.axis.Constants.XSD_STRING);
            //调用WebService服务
            String info = "你好!";
            String result = (String) call.invoke(new Object[]{info});
            System.out.println(result);
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

}

 

posted @ 2020-03-09 21:12  天宇轩-王  阅读(961)  评论(0编辑  收藏  举报