java开发axis 1.4 的webserver客户端和服务端

开发环境:
eclipse 3.7+jdk 1.7+tomcat6.0+axis1.4(axis1.4包可以再http://ws.apache.org/axis下载) 解压axis-bin-1_4.zip这个包可以看到webapps目录和lib目录,把webapp目录下的axis文件夹考到tomcat的webapps目录下,之后拷贝activation.jar、mail.jar、tools.jar到%TOMCAT_HOME%\webapps\axis\WEB-INF\lib目录下。启动tomcat,访问http://localhost:8080/axis/happyaxis.jsp如果访问成功,恭喜你!基本的配置你已经做完了。现在来说一下最关键的Webservice的发布。AXIS提供了两种发布方式,一种是即时发布(Instant Deployment),另外一种是定制发布(CustomDeployment)。即时发布提供了一种非常简单的webservice的发布方式,但是其中限制太多,因此在实际的开发中定制发布才是首选。

1.即时发布jws

即时发布就是将Java源代码文件(.java文件)拷贝到%TOMCAT_HOME%/webapps/zxis目录下:示例如下

   TyjcComm09BO.java

  publicclass TyjcComm09BO{

     publicString getWgtByHeatNoS(String compId, String brand,

              String groupName, String partCode){

         return“HeatNoS”;

     }

     publicString getTy04Cm01S(String compId, String brand, String groupName,

              String partCode, String heatNo) {

         return“Cm01S”;

     }

}

把TyjcComm09BO.java文件的后缀改成.jws放到%TOMCAT_HOME%\webapps\axis目录下(也就是工程发布的目录),启动tomcat(或工程的服务)访问http://localhost:8080/axis/ TyjcComm09BO.jws,如果看到Click to see the WSDL,这个超链接就说名发布成功(用SOAP ui测试服务端业务逻辑是否都正确),然后编写客户端

客户端代码如下:

java 代码

packagecom.chnic.test;

importjava.net.URL;

importjavax.xml.namespace.QName;

importorg.apache.axis.client.Call;

importorg.apache.axis.client.Service;

public class Test {

public static voidmain(String[] args) throws Exception{

StringtargetEendPoint = "http://localhost:8080/axis/ TyjcComm09BO.jws"; (这个地址就是发布的地址)

Service service =new Service();

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

call.setOperationName(newQName(targetEendPoint, "getWgtByHeatNoS ")); (第二个参数是方法,后面省略第二个方法,是一样的)

call.setTargetEndpointAddress(newURL(targetEendPoint));

String result =(String) call.invoke(new Object[]{“compId”,” compId”,” groupName”,” partCode” }); //条件

System.out.println(result);

}

}

2.定制发布 Custom Deployment - Introducing WSDD

 

比起即时发布定制发布更加烦琐也更复杂,但是换来的却是更大的灵活性,因此在实际项目中定制发布还是不二的选择。定制发布需要你自己编写一个WSDD

代码如下:

服务端:

  第一步,写好接口和实现类

接口:@WebServiceSOAPBinding(style=SOAPBinding.Style.RPC)不可少

/**

 * Iwebservice.java

 *

 * This file was auto-generated from WSDL

 * by the Apache Axis 1.4 Apr 22, 2006(06:55:48 PDT) WSDL2Java emitter.

 */

packagecom.wisco.ty.webservice;

importjavax.jws.WebMethod;

importjavax.jws.WebService;

importjavax.jws.soap.SOAPBinding;

/**

 * 服务端接口

 * @file Iwebservice.java

 * @author 姓名

 * @date 2014-11-19下午1:51:39

 * @version 1.0

 */

@WebService

@SOAPBinding(style= SOAPBinding.Style.RPC)

public interfaceIwebservice extends java.rmi.Remote {

    @WebMethod java.lang.String getWgtByHeatNoS(java.lang.Stringarg0, java.lang.String arg1, java.lang.String arg2, java.lang.String arg3)throws java.rmi.RemoteException;

    @WebMethod java.lang.StringgetTy04Cm01S(java.lang.String arg0, java.lang.String arg1, java.lang.Stringarg2, java.lang.String arg3, java.lang.String arg4) throwsjava.rmi.RemoteException;

}

实现类:@WebService(endpointInterface ="http://localhost/rcsm.war/services/tyWebservice")不可缺,在客户端要用到

packagecom.wisco.ty.webservice;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Map;

importjavax.annotation.Resource;

import javax.jws.WebService;

importorg.m6.SpringHolder;

importorg.m6.base.BaseBO;

importorg.springframework.stereotype.Component;

importcom.alibaba.fastjson.JSON;

importcom.bstek.dorado.utils.StringHelper;

importcom.wisco.ty.comm.TyjcComm09BO;

importcom.wisco.ty.webservice.Iwebservice;

 

/**

 * 服务端的业务逻辑

 * @file TyjcComm09BO.java

 * @date 2014-11-13上午9:31:59

 * @version 1.0

 */

@WebService(endpointInterface="http://localhost/rcsm.war/services/tyWebservice")

public classIwebserviceImp implements Iwebservice {

         public final static String CLASS_VERSION= "$Id: IwebserviceImp.java,v 1.0 2014-10-30,下午03:27:21  $";

        

         /* (non-Javadoc)

          * @seecom.wisco.ty.webservice.Iwebservice#getWgtByHeatNoS(java.lang.String,java.lang.String, java.lang.String, java.lang.String)

          */

         public String getWgtByHeatNoS(StringcompId, String brand,

                            String groupName,String partCode) {

                   TyjcComm09BOtyjcComm09BO=(TyjcComm09BO)SpringHolder.getApplicationContext().getBean("tyjcComm09BO");

                   String result =tyjcComm09BO.getWgtByHeatNoS(compId, brand, groupName,

                                     partCode);

                   return result;

         }

 

         /* (non-Javadoc)

          * @seecom.wisco.ty.webservice.Iwebservice#getTy04Cm01S(java.lang.String,java.lang.String, java.lang.String, java.lang.String, java.lang.String)

          */

         public String getTy04Cm01S(StringcompId, String brand, String groupName,

                            String partCode,String heatNo) {

                   TyjcComm09BOtyjcComm09BO=(TyjcComm09BO)SpringHolder.getApplicationContext().getBean("tyjcComm09BO");

                   String result =tyjcComm09BO.getTy04Cm01S(compId, brand, groupName,

                                     partCode,heatNo);

                  returnresult;

         }

业务(可以写在实现类中,但是这里因为用到公司平台的hibernatespring,所以另外调用方法)

 package com.wisco.ty.comm;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Map;

importjavax.jws.WebService;

importorg.m6.base.BaseBO;

importorg.springframework.stereotype.Component;

importcom.alibaba.fastjson.JSON;

importcom.bstek.dorado.utils.StringHelper;

import com.wisco.ty.webservice.Iwebservice;

/**

 * 服务端具体业务逻辑

 * @file TyjcComm09BO.java

 * @date 2014-11-13上午9:31:59

 * @version 1.0

 */

@Component("tyjcComm09BO")

public classTyjcComm09BO extends BaseBO {

         public final static StringCLASS_VERSION = "$Id: TyjcComm09BO.java,v 1.0 2014-10-30,下午03:27:21  $";

 

         public String getWgtByHeatNoS(StringcompId, String brand,

                            String groupName,String partCode) {

                   String sql = " SELECTa.heat_no_,sum(b.afm_wgt_) FROM tbty04 a, tbcm01 b "

                                     + "WHERE a.cm01_id_ = b.cm01_id_  ";

                   List<Object> listParam= new ArrayList<Object>();

                   if(StringHelper.isNotEmpty(compId)) {

                            sql = sql + "AND a.comp_id_ = ? ";

                            listParam.add(compId);

                   }

                   if(StringHelper.isNotEmpty(brand)) {

                            sql = sql + "AND a.brand_ = ? ";

                            listParam.add(brand);

                   }

                   if(StringHelper.isNotEmpty(groupName)) {

                            sql = sql +"  AND a.group_Name_ = ? ";

                            listParam.add(groupName);

                   }

                   if (StringHelper.isNotEmpty(partCode)){

                            sql = sql + "AND a.part_code_ = ?  ";

                            listParam.add(partCode);

                   }

                   sql = sql + " ANDa.zl_flag_ = 'N' AND b.status_ not in ('04','55') "

                                     + "group by a.heat_no_  ";

                   List<Map<String,Object>> listMap = this.getJdbcTemplate()

                                      .queryForList(sql, listParam.toArray());

                   String result =JSON.toJSONString(listMap);

                   return result;

         }

         public String getTy04Cm01S(StringcompId, String brand, String groupName,

                            String partCode,String heatNo) {

                   String sql = "SELECTa.BRAND_,a.GROUP_NAME_, a.PART_CODE_,a.PART_NAME_,"

                                     + "b.Y_MONTH_,b.THICK_,b.WIDTH_,b.LENGTH_,b.LABEL_NO_,b.USED_LABEL_NO_,"

                                     + "a.HEAT_NO_,b.AFM_WGT_,b.IN_DATE_  FROMTBTY04 a,TBCM01 b "

                                     + " WHEREa.CM01_ID_ = b.CM01_ID_  ";

                   List<Object> objList =new ArrayList<Object>();

                   if(StringHelper.isNotEmpty(compId)) {

                            sql = sql + "AND a.COMP_ID_ = ? ";

                            objList.add(compId);

                   }

                   if(StringHelper.isNotEmpty(brand)) {

                            sql = sql + "AND a.BRAND_ = ? ";

                            objList.add(brand);

                   }

                   if (StringHelper.isNotEmpty(groupName)){

                            sql = sql + "AND a.GROUP_NAME_ = ? ";

                            objList.add(groupName);

                   }

                   if(StringHelper.isNotEmpty(partCode)) {

                            sql = sql + "AND a.PART_CODE_ = ? ";

                            objList.add(partCode);

                   }

                   if(StringHelper.isNotEmpty(heatNo)) {

                            sql = sql + "AND a.HEAT_NO_ = ? ";

                            objList.add(heatNo);

                   }

                   List<Map<String,Object>> listMap = this.getJdbcTemplate()

                                     .queryForList(sql,objList.toArray());

            String result = JSON.toJSONString(listMap);

                   return result;

         }

}

下面就要发布服务端:

1、  web.xmlz中加以下内容:

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

    <listener>

       <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>

    </listener>

   

  <servlet>

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

    <display-name>Apache-AxisServlet</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>5001</param-value>

    </init-param>

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

  </servlet>

 

  <servlet-mapping>

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

   <url-pattern>/axis/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 adminservlet -->

 <!--

  <servlet-mapping>

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

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

  </servlet-mapping>

 -->

 

<!--     <session-config> -->

        Default to 5 minute session timeouts

<!--        <session-timeout>5</session-timeout> -->

<!--     </session-config> -->

 

    <!-- currently the W3C havent settled ona 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-listid="WelcomeFileList">

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

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

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

  </welcome-file-list>

2.Webservice发布文件:server-config.wsdd

 <?xml version="1.0"encoding="UTF-8"?>

<deploymentxmlns="http://xml.apache.org/axis/wsdd/"

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

    <handlertype="java:org.apache.axis.handlers.http.URLMapper"name="URLMapper"/>  

    <service name="tyWebservice"provider="java:RPC">(服务端service名字)

        <parametername="className"value="com.wisco.ty.webservice.IwebserviceImp" />(实现类的地址)

        <!-- * 代表所有的方法都暴露 -->

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

    </service>

     <transportname="http">   

      <requestFlow>   

<handlertype="URLMapper"/>   

</requestFlow>   

</transport>   

</deployment>

然后就可以启动工程,同事服务端也发布了,然后访问http://localhost/rcsm.war/services就可以看到也可以访问(http://localhost/rcsm.war/services/tyWebservice?wsdl)只是访问的界面不一样(为了保险就好用soap ui把这个地址放到里面去测一下),如果没问题,服务端就发布成功。

客户端代码如下:

 

packagecom.wisco.ty.comm;

importjava.util.List;

importjavax.xml.namespace.QName;

import org.m6.base.BaseBO;

importorg.springframework.stereotype.Component;

importorg.apache.axis.client.Call;

import org.apache.axis.client.Service;

/**

 * 客户端具体业务逻辑

 * @file TyjcComm10BO.java

 * @author 姓名</a>

 * @date 2014-11-19下午1:53:10

 * @version 1.0

 */

@Component("tyjcComm10BO")

@SuppressWarnings("unchecked")

public classTyjcComm10BO extends BaseBO   {

         public final static StringCLASS_VERSION =

                            "$Id:TyjcComm10BO.java,v 1.0 2014-10-30,下午03:29:00 $";

         @SuppressWarnings("rawtypes")

         public String getWgtByHeatNoC(StringcompId,String brand,String groupName,String partCode)throws Exception{

                            StringtargetEendPoint  ="http://localhost/rcsm.war/services/tyWebservice";

                            Service service =new Service();

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

                          call.setTargetEndpointAddress(targetEendPoint);

                          call.setOperationName(newQName(targetEendPoint, "getWgtByHeatNoS"));  // 访问服务端的地址,服务端业务提供的方法

                          String result = (String) call.invoke(newObject[]{compId,brand,groupName,partCode});

                          if(result!=null){

                          return result;

                          }

         return null;

         }

         @SuppressWarnings("rawtypes")

         public String getTy04Cm01C(StringcompId, String brand,

                            String groupName,String partCode, String heatNo) throws Exception{

                                       String targetEendPoint  ="http://localhost/rcsm.war/services/tyWebservice";

                                       Service service = new Service();

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

                                   call.setTargetEndpointAddress(targetEendPoint);

                                   call.setOperationName(new QName(targetEendPoint,"getTy04Cm01S"));  //       访问服务端的地址,服务端业务提供的方法                           

String result = (String) call.invoke(newObject[]{compId,brand,groupName,partCode,heatNo});

                                   if(result!=null){

                                   return result;

                                   }

return null;

                   }

}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Spring Boot整合Axis1.4实现WebService服务端,可以按照以下步骤进行: 1. 在pom.xml文件中添加Axis1.4依赖: ``` <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> ``` 2. 创建一个WebService接口,并在接口上添加@WebService注解: ``` @WebService public interface UserService { String sayHello(String name); } ``` 3. 创建一个WebService接口的实现类,并在实现类上添加@WebService(endpointInterface = "com.example.demo.UserService")注解: ``` @WebService(endpointInterface = "com.example.demo.UserService") public class UserServiceImpl implements UserService { @Override public String sayHello(String name) { return "Hello, " + name + "!"; } } ``` 4. 在Spring Boot的配置文件application.properties中添加Axis1.4的配置: ``` # Axis1.4配置 axis.servletPath=/services/* ``` 5. 创建一个AxisServlet的注册类,并在类上添加@Configuration和@EnableWebMvc注解: ``` @Configuration @EnableWebMvc public class AxisServletRegistration { @Bean public ServletRegistrationBean<AxisServlet> axisServlet() { ServletRegistrationBean<AxisServlet> registration = new ServletRegistrationBean<>(new AxisServlet(), "/services/*"); registration.addInitParameter("axis.servicesPath", "/WEB-INF/services"); registration.addInitParameter("axis.wsddPath", "/WEB-INF/server-config.wsdd"); return registration; } } ``` 6. 启动Spring Boot应用程序,访问http://localhost:8080/services/UserService?wsdl,可以看到WebService服务端已经成功启动。 以上就是Spring Boot整合Axis1.4实现WebService服务端的全部步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值