JSP学习笔记(一百二十八):使用axis1.4开发webservice应用(三)

以前已经写过两篇关于axis1.4的文章,这里要再做些补充,是在实际应用中遇到的问题

 

问题一、webservice中传输实体类的方法

发布服务时,需要修改deploy.wsdd文件

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="MyService" provider="java:RPC">
        <parameter name="className" value="com.site.webservice.MyService" />
        <parameter name="allowedMethods" value="*" />
        <beanMapping languageSpecificType="java:com.site.pojo.Pojo1" qname="ns1:Pojo1" xmlns:ns1="urn:BeanService" />
        <beanMapping languageSpecificType="java:com.site.pojo.Pojo2" qname="ns2:Pojo2" xmlns:ns2="urn:BeanService" />
    </service>
</deployment>

注意文件中新添加的内容beanMapping那段,不管是服务传递参数,还是服务返回的对象,都写到beanMapping里就行。然后调用deploy.bat发布服务。

客户端调用的命令也需要重新执行,执行以后,会把相应的实体类对象带过去

 

问题二、服务端调用跟Spring做整合的问题

用axis发布的服务的时候,一般都会调用数据库,如果用到了spring,就要牵扯到跟Spring做整合的问题了,我一般是这么做,直接把Spring实例化的对象找出来,引用

public class MyService extends ServletEndpointSupport {
    
    private Service1 service1;
    
    @Override
    protected void onInit() throws ServiceException {
        service1= (Service1 )getApplicationContext().getBean("service1Impl");
        super.onInit();
    }
    
    public String queryValue(String s) {
        return service1.queryValue(s);
    }

}

注意看代码,MyService服务类继承了ServletEndpointSupport类,然后重写了OnInit方法,在这个方法里面,引用Spring实例化过的对象,这个service1对象里面就是操作数据库的各种方法。

 

问题三、客户端调用跟Spring整合的问题

客户端在通过命令执行后,会生成一组文件,其中有一个文件是XXXLocator,我这里用到了Spring的注解,直接在XXXLocator类上加上@Repository

@Repository
public class MyServiceLocator extends org.apache.axis.client.Service implements com.website.client.MyServiceService {
......
}

然后在需要调用的地方引用即可

@Repository
public class MyDAOImpl implements MyDAO {
    
    @Autowired
    private MyServiceLocator myServiceLocator;

    public String queryValueString s) {
        String returnValue = "";
         try {
            returnValue = myServiceLocator.getMyService().queryValue(s);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return returnValue;
    }

}

 

posted @ 2015-02-05 11:46  魔豆  阅读(276)  评论(0编辑  收藏  举报