Axis2创建WebService实例

Posted 四海骄阳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Axis2创建WebService实例相关的知识,希望对你有一定的参考价值。

  一、Axis2的下载和安装


     1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本:
      可以下载如下两个zip包:
      axis2-1.5.4-bin.zip
      axis2-1.5.4-war.zip
      其中 axis2-1.5.4-bin.zip文件中包含了Axis2中所有的jar文件, 
      axis2-1.5.4-war.zip文件用于将WebService发布到Web容器中。


     2.将axis2-1.5.4-war.zip文件解压到相应的目录,将目录中的axis2.war文件放到<Tomcat安装目录>webapps目录中,
     并启动Tomcat,在浏览器地址栏中输入如下的URL:
     http://localhost:8080/axis2/,如看到axis2的主页面则安装成功。

 

  二、编写和发布WebService


   (1)用POJO形式发布(无需配置)


    在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。
    其中POJO中所有的public方法将被发布成WebService方法。
    示例代码如下:

    

Java代码  技术图片
  1. public class HelloService {   
  2.     public String sayHello(){  
  3.         return "hello";  
  4.     }     
  5.     public String sayHelloToPerson(String name){          
  6.         if(name==null){  
  7.             name = "nobody";  
  8.         }  
  9.         return "hello,"+name;  
  10.     }  
  11. }  

   编译HelloService类后,将HelloService.class文件放到<Tomcat安装目录>webappsaxis2WEB-INFpojo目录中
  (如果没有pojo目录,则建立该目录)。现在我们已经成功将HelloService类发布成了WebService。
  在浏览器地址栏中输入如下的URL:
     http://localhost:8080/axis2/services/listServices


  在浏览器地址栏中输入如下的两个URL来分别测试sayHelloToPerson和sayHello方法:
    1.http://localhost:8080/axis2/services/HelloService/sayHello 
    2.http://localhost:8080/axis2/services/HelloService/sayHelloToPerson?name=bill


  页面显示如下结果:

Xml代码  技术图片
  1. <ns:sayHelloToPersonResponse xmlns:ns="http://ws.apache.org/axis2">  
  2.     <return>hello,bill</return>   
  3. </ns:sayHelloToPersonResponse>  

 

  在编写、发布和测试WebService时应注意如下几点:
     1. POJO类不能使用package关键字声明包。


     2. Axis2在默认情况下可以热发布WebService,也就是说,将WebService的.class文件复制到pojo目录中时,
        Tomcat不需要重新启动就可以自动发布WebService。
        如果想取消Axis2的热发布功能,可以打开<Tomcat安装目录>webappsaxis2WEB-INFconfaxis2.xml,
        找到如下的配置代码:

Xml代码  技术图片
  1. <parameter name="hotdeployment">true</parameter>  

 

  将true改为false即可。要注意的是,Axis2在默认情况下虽然是热发布,但并不是热更新.
  也就是说,一旦成功发布了WebService,再想更新该WebService,就必须重启Tomcat。
  这对于开发人员调试WebService非常不方便,因此,在开发WebService时,可以将Axis2设为热更新。
  在axis2.xml文件中找到

Xml代码  技术图片
  1. <parameter name="hotupdate">false</parameter>  

 

    将false改为true即可。


     3. 在浏览器中测试WebService时,如果WebService方法有参数,需要使用URL的请求参数来指定该WebService方法
     参数的值,请求参数名与方法参数名要一致,例如,要测试sayHelloToPerson方法,请求参数名应为name,如上面的URL所示。


     4. 发布WebService的pojo目录只是默认的,如果读者想在其他的目录发布WebService,
     可以打开axis2.xml文件,并在<axisconfig>元素中添加如下的子元素:

Xml代码  技术图片
  1. <deployer extension=".class" directory="my" class="org.apache.axis2.deployment.POJODeployer"/>  

 

  上面的配置允许在<Tomcat安装目录>webappsaxis2WEB-INFmy目录中发布WebService。
   例如,将本例中的HelloService.class复制到my目录中也可以成功发布
   (但要删除pojo目录中的SimpleService.class,否则WebService会重名)。

 

(2)使用services.xml配置文件发布


  用Axis2实现Web Service,虽然可以将POJO类放在axis2WEB-INFpojo目录中直接发布成Web Service,
  这样做不需要进行任何配置,但这些POJO类不能在任何包中。这似乎有些不方便.
  为此,Axis2也允许将带包的POJO类发布成Web Service。先实现一个POJO类,代码如下:

Java代码  技术图片
  1. package com.sinosoft.webservice;  
  2. public class HelloServiceNew {            
  3.     public String sayHelloNew(){  
  4.         return "hello";  
  5.     }             
  6.     public String sayHelloToPersonNew(String name){       
  7.         if(name==null){  
  8.             name = "nobody";  
  9.         }             
  10.         return "hello,"+name;  
  11.     }  
  12.     public void updateData(String data){  
  13.         System.out.println(data+" 已更新。");  
  14.     }  
  15. }  

 

   要想将HelloServiceNew类发布成Web Service,需要一个services.xml文件,
   这个文件需要放在META-INF目录中,该文件的内容如下:

Xml代码  技术图片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <service name="HelloServiceNew">  
  3.     <description>  
  4.         Web Service例子  
  5.     </description>  
  6.     <parameter name="ServiceClass">  
  7.         com.sinosoft.webservice.HelloServiceNew  
  8.     </parameter>  
  9.     <messageReceivers>  
  10.         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
  11.             class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
  12.         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"  
  13.             class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
  14.     </messageReceivers>  
  15. </service>  

 

 其中<service>元素用于发布Web Service,一个<service>元素只能发布一个WebService类,
  name属性表示WebService名,如下面的URL可以获得这个WebService的WSDL内容:
  http://localhost:8080/axis2/services/HelloServiceNew?wsdl
  其中name属性名就是上面URL中"?"和"/"之间的部分。
  <description>元素表示当前Web Service的描述,<parameter>元素用于设置WebService的参数,
  在这里用于设置WebService对应的类名。
  在这里最值得注意的是<messageReceivers>元素,该元素用于设置处理WebService方法的处理器。
  例如,sayHelloNew方法有一个返回值,因此,需要使用可处理输入输出的RPCMessageReceiver类,
  而updateData方法没有返回值,因此,需要使用只能处理输入的RPCInOnlyMessageReceiver类。
  
  使用这种方式发布WebService,必须打包成.aar文件,.aar文件实际上就是改变了扩展名的.jar文件。
  现在建立了两个文件:HelloServiceNew.java和services.xml。
  将HelloServiceNew.java编译,生成HelloServiceNew.class。
  services.xml和HelloServiceNew.class文件的位置如下:
  D:ws comsinosoftwebserviceHelloServiceNew.class
  D:wsMETA-INFservices.xml
  在windows控制台中进入ws目录,并输入如下的命令生成.aar文件.

 

    jar cvf ws.aar .

  实际上,.jar文件也可以发布webservice,但axis2官方文档中建议使用.aar文件发布webservice.
  最后将ws.aar文件复制到<Tomcat安装目录>webappsaxis2WEB-INFservices目录中,
  启动Tomcat后,就可以调用这个WebService了。

 

  另外services.xml文件中也可以直接指定WebService类的方法,如可以用下面的配置代码来发布WebService

Xml代码  技术图片
  1. <service name=" HelloServiceNew ">  
  2. <description>  
  3.     Web Service例子  
  4. </description>  
  5. <parameter name="ServiceClass">  
  6.     com.sinosoft.webservice.HelloServiceNew    
  7. </parameter>  
  8. <operation name="sayHello">  
  9.     <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>  
  10. </operation>  
  11. <operation name="updateData">  
  12.     <messageReceiver  
  13.         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>  
  14.     </operation>  
  15. </service>  

 

 

   如果想发布多个WebService,可以使用<serviceGroup>元素

Xml代码  技术图片
  1. <serviceGroup>  
  2. <service name="myService1">  
  3.     ...  
  4. </service>  
  5. <service name="myService2">  
  6.     ...  
  7. </service>  
  8. </serviceGroup>  

 

中间省略的代码同上面services.xml文件的配置。

 

三、 用Java实现调用WebService的客户端程序


     WebService是为程序服务的,只在浏览器中访问WebService是没有意义的。调用WebService的客户端代码如下:

Java代码  技术图片
  1. import javax.xml.namespace.QName;  
  2. import org.apache.axis2.AxisFault;  
  3. import org.apache.axis2.addressing.EndpointReference;  
  4. import org.apache.axis2.client.Options;  
  5. import org.apache.axis2.rpc.client.RPCServiceClient;  
  6. public class TestMain {  
  7. public static void main(String args[]) throws AxisFault{  
  8.    //  使用RPC方式调用WebService          
  9.     RPCServiceClient serviceClient = new RPCServiceClient();  
  10.     Options options = serviceClient.getOptions();  
  11.     //  指定调用WebService的URL  
  12.     EndpointReference targetEPR = new EndpointReference(  
  13.             "http://localhost:8080/axis2/services/HelloService");  
  14.     options.setTo(targetEPR);  
  15.     //  指定sayHelloToPerson方法的参数值  
  16.     Object[] opAddEntryArgs = new Object[] {"美女"};  
  17.     //  指定sayHelloToPerson方法返回值的数据类型的Class对象  
  18.     Class[] classes = new Class[] {String.class};  
  19.     //  指定要调用的sayHelloToPerson方法及WSDL文件的命名空间  
  20.     QName opAddEntry = new QName("http://ws.apache.org/axis2", "sayHelloToPerson");  
  21.     //  调用sayHelloToPerson方法并输出该方法的返回值  
  22.     System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);  
  23. }  
  24. }  

   输出结果为:
   hello,美女


  在编写客户端代码时应注意如下几点:

     1. 客户端代码需要引用很多Axis2的jar包,如果读者不太清楚要引用哪个jar包,
        可以在Eclipse的工程中引用Axis2发行包的lib目录中的所有jar包。


     2. 在本例中使用了RPCServiceClient类的invokeBlocking方法调用了WebService中的方法。
       invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象,表示要调用的方法名;
       第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];
       第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。
       当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}。


     3. 如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法,
        该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同。


     4. 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,
      也就是<wsdl:definitions>元素的targetNamespace属性值。

 

  四、用wsdl2java简化客户端的编写


  Axis2提供了一个wsdl2java.bat命令可以根据WSDL文件自动产生调用WebService的代码。
  wsdl2java.bat命令可以在<Axis2安装目录>/bin目录中找到。
  在使用wsdl2java.bat命令之前需要设置AXIS2_HOME环境变量,该变量值是<Axis2安装目录>。
  在Windows控制台输出如下的命令行来生成调用WebService的代码:
  %AXIS2_HOME%inwsdl2java -uri http://localhost:8080/axis2/services/HelloService?wsdl 
         -p client -s -o stub
  其中-url参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。
  -p参数指定了生成的Java类的包名,-o参数指定了生成的一系列文件保存的根目录。
  在执行完上面的命令后,就会发现在当前目录下多了个stub目录,
  在stub/src/client目录可以找到一个HelloServiceStub.java文件,
  该文件复杂调用WebService,可以在程序中直接使用这个类,代码如下:

Java代码  技术图片
  1. package client;  
  2. public class StupTest {           
  3.     public static void main(String[] args) throws Exception    
  4.     {  
  5.         HelloServiceStub stub = new HelloServiceStub();  
  6.         HelloServiceStub.SayHelloToPerson gg = new HelloServiceStub.SayHelloToPerson();  
  7.         gg.setName("美女");  
  8.         System.out.println( stub.sayHello().get_return());  
  9.         System.out.println(stub.sayHelloToPerson(gg).get_return());  
  10.     }   
  11. }  

   输出结果如下:
  hello
  hello,美女

 

  上面的代码大大简化了调用WebService的步骤,并使代码更加简洁。
  但要注意的是,wsdl2java.bat命令生成的Stub类将WebService方法的参数都封装在了相应的类中,
  类名为方法名,例如,sayHelloToPerson方法的参数都封装在了SayHelloToPerson类中,
  要想调用sayHelloToPerson方法,必须先创建SayHelloToPerson类的对象实例。 

 
平均薪酬38K! 前端工程师凭什么这么值钱?
2019年,这类程序员需求增速达174%?原因竟是...
分享到: 技术图片 技术图片
评论
36 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. <c:if test="${ReleaseResult==null}">                  <p class="errorMsg"><%=ToshibaMFP.getInstance().resourceService.getMessageByID(language,"INFO-0014")%></p>  
  2. </c:if>  
35 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. if(result != null && result.length() >0){  
  2.     if(result.startsWith("INF0009")){  
  3.     request.setAttribute("ReleaseResult",ToshibaMFP.getInstance().resourceService.getMessageByID(language,"INFO-0015"));  
  4.     }else{  
  5.     request.setAttribute("ReleaseResult",ToshibaMFP.getInstance().resourceService.getMessageByID(language,"INFO-0016"));  
  6.     }  
  7. }  
34 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. String printerIp = req.getRemoteAddr();  
  2.         String releaseCode = req.getParameter("release_code");  
  3.         VPrinter printer = ToshibaMFP.getInstance().getPrinterByIpAddress(  
  4.                 printerIp);  
  5.         if (CommonUtil.isBlank(printer.serialNumber)) {  
  6.             printer.serialNumber = printer.readerName;  
  7.         }  
  8.         String screenPrefix = "wvga";  
  9.         if ("SVGA".equalsIgnoreCase(printer.screenType)) {  
  10.             screenPrefix = "svga";  
  11.         }  
  12.         String result = ToshibaMFP.getInstance().httpService.releaseJobByCode(  
  13.                 printer, releaseCode);  
  14.         if ("SVGA".equalsIgnoreCase(screenPrefix)) {  
  15.             resp.sendRedirect("/toshibamfp/svga/releaseCode.jsp?result="  
  16.                     + result  
  17.                     + "&printerIp="  
  18.                     + printerIp  
  19.                     + "&language="  
  20.                     + MfpConfigure.getInstance().getProperty(  
  21.                             CommonConstant.PARAM_DEFAULT_LANGUAGE));  
  22.         } else {  
  23.             resp.sendRedirect("/toshibamfp/wvga/releaseCode.jsp?result=  
  24.                     + result  
  25.                     + "&printerIp="  
  26.                     + printerIp  
  27.                     + "&language="  
  28.                     + MfpConfigure.getInstance().getProperty(  
  29.                             CommonConstant.PARAM_DEFAULT_LANGUAGE));  
  30.         }  
33 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. function press1(e)  
  2.         {  
  3.             var releaseCode = document.getElementById("release_code");  
  4.             releaseCode.value = releaseCode.value + ‘1‘;  
  5.         }  
  6.               
  7.         function press2(e)  
  8.         {  
  9.             var releaseCode = document.getElementById("release_code");  
  10.             releaseCode.value = releaseCode.value + ‘2‘;  
  11.         }  
  12.               
  13.         function press3(e)  
  14.         {  
  15.             var releaseCode = document.getElementById("release_code");  
  16.             releaseCode.value = releaseCode.value + ‘3‘;  
  17.         }  
  18.               
  19.         function press4(e)  
  20.         {  
  21.             var releaseCode = document.getElementById("release_code");  
  22.             releaseCode.value = releaseCode.value + ‘4‘;  
  23.         }  
  24.               
  25.         function press5(e)  
  26.         {  
  27.             var releaseCode = document.getElementById("release_code");  
  28.             releaseCode.value = releaseCode.value + ‘5‘;  
  29.         }  
  30.               
  31.         function press6(e)  
  32.         {  
  33.             var releaseCode = document.getElementById("release_code");  
  34.             releaseCode.value = releaseCode.value + ‘6‘;  
  35.         }  
  36.               
  37.         function press7(e)  
  38.         {  
  39.             var releaseCode = document.getElementById("release_code");  
  40.             releaseCode.value = releaseCode.value + ‘7‘;  
  41.         }  
  42.               
  43.         function press8(e)  
  44.         {  
  45.             var releaseCode = document.getElementById("release_code");  
  46.             releaseCode.value = releaseCode.value + ‘8‘;  
  47.         }  
  48.               
  49.         function press9(e)  
  50.         {  
  51.             var releaseCode = document.getElementById("release_code");  
  52.             releaseCode.value = releaseCode.value + ‘9‘;  
  53.         }  
  54.               
  55.         function press0(e)  
  56.         {  
  57.             var releaseCode = document.getElementById("release_code");  
  58.             releaseCode.value = releaseCode.value + ‘0‘;  
  59.         }  
  60.               
  61.         function releaseCode(e)  
  62.         {  
  63.             var releaseCode = document.getElementById("release_code");  
  64.             if(releaseCode.value != ‘‘)  
  65.             {  
  66.                 document.getElementById("action_form").submit();  
  67.             }  
  68.         }  
  69.               
  70.         function backspace(e)  
  71.         {   
  72.             var releaseCode = document.getElementById("release_code");  
  73.             if(releaseCode.value != ‘‘)  
  74.             {  
  75.                 releaseCode.value = releaseCode.value.substring(0,releaseCode.value.length-1);  
  76.             }  
  77.         }  
  78. <tr height="75px;">  
  79.                         <td><button type="button" class="numButton" onclick="press1(event)"><font color="black" size="6">1</font></button></td>  
  80.                         <td style="padding-left:25px;padding-right:25px;"><button type="button" class="numButton" onclick="press2(event)"><font color="black" size="6">2</font></button></td>  
  81.                         <td><button type="button" class="numButton" onclick="press3(event)"><font color="black" size="6">3</font></button></td>  
  82.                     </tr>  
  83.                     <tr height="75px;">  
  84.                         <td><button type="button" class="numButton" onclick="press4(event)"><font color="black" size="6">4</font></button></td>  
  85.                         <td style="padding-left:25px;padding-right:25px;"><button type="button" class="numButton" onclick="press5(event)"><font color="black" size="6">5</font></button></td>  
  86.                         <td><button type="button" class="numButton" onclick="press6(event)"><font color="black" size="6">6</font></button></td>  
  87.                     </tr>  
  88.                     <tr height="75px;">  
  89.                         <td><button type="button" class="numButton" onclick="press7(event)"><font color="black" size="6">7</font></button></td>  
  90.                         <td style="padding-left:25px;padding-right:25px;"><button type="button" class="numButton" onclick="press8(event)"><font color="black" size="6">8</font></button></td>  
  91.                         <td><button type="button" class="numButton" onclick="press9(event)"><font color="black" size="6">9</font></button></td>  
  92.                     </tr>  
  93.                     <tr height="75px;">  
  94.                         <td><button type="button" class="numButton" onclick="press0(event)"><font color="black" size="6">0</font></button></td>  
  95.                         <td style="padding-left:25px;padding-right:25px;"><button type="button" class="numButton" onclick="backspace(event)"><font color="black" size="5"><%=ToshibaMFP.getInstance().resourceService.getMessageByID(language,"Delete")%></font></button></td>  
  96.                         <td><button type="button" class="okButton" onclick="releaseCode(event)"><font color="white" size="5"><%=ToshibaMFP.getInstance().resourceService.getMessageByID(language,"Confirm")%></font></button></td>  
  97.                     </tr>  
32 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. String loginAccount = req.getParameter("login_account");  
  2.         String loginPassword = req.getParameter("login_password");  
  3.         String loginDomain = req.getParameter("login_domain");  
  4.         String cardId = req.getParameter("card_id");  
  5.         String printIp = req.getRemoteAddr();  
  6.         VPrinter printerA = ToshibaMFP.getInstance().getPrinterByIpAddress(  
  7.                 printIp);  
  8.         String serialNumber = printerA.serialNumber;  
  9.         String result = ToshibaMFP.getInstance().httpService.cardRegister(  
  10.                 loginAccount, loginDomain, loginPassword, cardId, serialNumber);  
  11.         req.getSession().setAttribute("RegisterResult", result);  
  12.         String screenType = printerA.screenType;  
  13.         if ("OK:Success".equalsIgnoreCase(result)) {  
  14.             VPrinter printer = ToshibaMFP.getInstance()  
  15.                     .getPrinterBySerialNumber(serialNumber);  
  16.             VUser user = ToshibaMFP.getInstance().getUserByName(loginAccount);  
  17.             MDSUserInfoType userInfo = new MDSUserInfoType();  
  18.             userInfo.setName(user.userName);  
  19.             userInfo.setPassword(user.password);  
  20.             userInfo.setDomain(loginDomain);  
  21.             userInfo.setUserID(user.userId);  
  22.             if (user.emailAddress != null) {  
  23.                 userInfo.setEMailId(user.emailAddress);  
  24.             }  
  25.             // set departmentCode into MDSuserInfo  
  26.             if (user.departmentCode != null) {  
  27.                 DepartmentDetailType departmentDetailType = new DepartmentDetailType();  
  28.                 StringListType dcodeList = new StringListType();  
  29.                 if (user.departmentCode.contains(",")) {  
  30.                     String[] dclist = user.departmentCode.split(",");  
  31.                     dcodeList.setItem(dclist);  
  32.                 } else if (user.departmentCode.contains(";")) {  
  33.                     String[] dclist = user.departmentCode.split(";");  
  34.                     dcodeList.setItem(dclist);  
  35.                 } else {  
  36.                     dcodeList.addItem(user.departmentCode);  
  37.                 }  
  38.                 departmentDetailType.setDepartmentCodeList(dcodeList);  
  39.                 userInfo.setDepartment(departmentDetailType);  
  40.             }  
  41.   
  42.             // quotaSetting  
  43.             if (user.copyQuotaEnabled) {  
  44.                 if (user.commonAccountEnable || user.colorAccountEnable  
  45.                         || user.monoAccountEnable) {  
  46.                     QuotaCategoryType quotaCategoryType = new QuotaCategoryType();  
  47.                     QuotaType colorquotaType = new QuotaType();  
  48.                     colorquotaType.setQuota(String  
  49.                             .valueOf(user.leftColorCopyImpression));  
  50.                     QuotaType monoquoQuotaType = new QuotaType();  
  51.                     monoquoQuotaType.setQuota(String  
  52.                             .valueOf(user.leftMonoCopyImpression));  
  53.                     quotaCategoryType.setTotal(colorquotaType);  
  54.                     quotaCategoryType.setTotal(monoquoQuotaType);  
  55.                     userInfo.setQuota(quotaCategoryType);  
  56.                 }  
  57.             }  
  58.             StringListType permissionList = new StringListType();  
  59.   
  60.             ArrayList<String> pList = new ArrayList<>();  
  61.   
  62. // get the authority from VUser,and put them into permissionList of// MDSuserInfo  
  63.         // copy  
  64.             if (user.monoCopyFeature) {  
  65.                 permissionList.addItem("CopyJob");  
  66.             }  
  67.             // print  
  68.             if (user.monoPrintFeature) {  
  69.                 permissionList.addItem("PrintJob");  
  70.             }  
  71.             // scan  
  72.             if (user.scanFeature) {  
  73.                 permissionList.addItem("RemoteScan");  
  74.                 permissionList.addItem("StoreToLocalStrorage");  
  75.                 permissionList.addItem("SendEmail");  
  76.             }  
  77.             // colorPrint  
  78.             if (user.colorPrintFeature && user.colorCopyFeature) {  
  79.                 permissionList.addItem("ColorPrint");  
  80.             }  
  81.             // fax  
  82.             if (user.faxFeature) {  
  83.                 permissionList.addItem("FaxTransmission");  
  84.                 permissionList.addItem("FaxReceivedPrint");  
  85.                 permissionList.addItem("FaxReceivedPrint");  
  86.             }  
  87.             permissionList.addItem("PrintManagement");  
  88.             permissionList.addItem("JobOperation");  
  89.             // must add EWBAccess into permissionList or could not reach  
  90.             // mdsPrintList  
  91.             permissionList.addItem("EWBAccess");  
  92.             userInfo.setPermissionList(permissionList);  
  93.   
  94.             // call loginMDS  
  95.             String soapConstant = ":49629/OutputManagementService";  
  96.             String fullUrl = "http://" + printer.ipAddress + soapConstant;  
  97.             OutputManagementServiceStub port = new OutputManagementServiceStub(  
  98.                     fullUrl);  
  99.             // set currentUserName on printer  
  100.             printer.currentUserName = user.userName;  
  101.             LoginMDS loginMDS = new LoginMDS();  
  102.             loginMDS.setMDSUserInfo(userInfo);  
  103.             try {  
  104.                 LoginMDSResponse mdsResponse = port.loginMDS(loginMDS);  
  105.             } catch (RemoteException e) {  
  106.                 logger.error("Login failed:" + e.getMessage());  
  107.             } catch (jp.co.toshibatec.www.e_studio.outputmanagementservice.EBridgeServiceException e) {  
  108.                 // TODO: handle exception  
  109.                 logger.info("Login failed from sysprint:" + e);  
  110.             }  
  111.             VUser vUser = ToshibaMFP.getInstance().getUserByName(loginAccount);  
  112.             if (!printer.gs1020) {  
  113.                 ToshibaMFP.getInstance().httpService.releaseAllJobs(  
  114.                         printer.serialNumber, vUser);  
  115.   
  116.             } else if (!vUser.mfpDirectPrint) {  
  117.                 if ((vUser.allowSelectLevel && vUser.levelList != null && vUser.levelList  
  118.                         .size() > 0)  
  119.                         || (null != vUser.projectList && vUser.projectList  
  120.                                 .size() > 0)) {  
  121.                     if ("SVGA".equalsIgnoreCase(screenType)) {  
  122.                         resp.sendRedirect("/toshibamfp/svga/projectlist.jsp?userName="  
  123.                                 + loginAccount  
  124.                                 + "&serialNumber="  
  125.                                 + printer.serialNumber);  
  126.                     } else {  
  127.                         resp.sendRedirect("/toshibamfp/wvga/projectlist.jsp?userName="  
  128.                                 + loginAccount  
  129.                                 + "&serialNumber="  
  130.                                 + printer.serialNumber);  
  131.                     }  
  132.                 } else {  
  133.                     if ("SVGA".equalsIgnoreCase(screenType)) {  
  134.                         resp.sendRedirect("/toshibamfp/svga/mdsPrintList.jsp?userName="  
  135.                                 + loginAccount  
  136.                                 + "&serialNumber="  
  137.                                 + printer.serialNumber);  
  138.                     } else {  
  139.                         resp.sendRedirect("/toshibamfp/wvga/mdsPrintList.jsp?userName="  
  140.                                 + loginAccount  
  141.                                 + "&serialNumber="  
  142.                                 + printer.serialNumber);  
  143.                     }  
  144.                 }  
  145.             } else {  
  146.                 logger.info("Direct print");  
  147.                 ToshibaMFP.getInstance().httpService.releaseAllJobs(  
  148.                         printer.serialNumber, vUser);  
  149.             }  
  150.         } else {  
  151.             if ("SVGA".equalsIgnoreCase(screenType)) {  
  152.                 resp.sendRedirect("/toshibamfp/svga/newcard.jsp?cardId="  
  153.                         + cardId  
  154.                         + "&language="  
  155.                         + MfpConfigure.getInstance().getProperty(  
  156.                                 CommonConstant.PARAM_DEFAULT_LANGUAGE)  
  157.                         + "&screenType=" + screenType + "&serialNumber="  
  158.                         + serialNumber);  
  159.             } else {  
  160.                 resp.sendRedirect("/toshibamfp/wvga/newcard.jsp?cardId="  
  161.                         + cardId  
  162.                         + "&language="  
  163.                         + MfpConfigure.getInstance().getProperty(  
  164.                                 CommonConstant.PARAM_DEFAULT_LANGUAGE)  
  165.                         + "&screenType=" + screenType + "&serialNumber="  
  166.                         + serialNumber);  
  167.             }  
  168.             // TODO userName or passWord was not correct,alert info and refresult  
  169.             logger.info("Login failed from sysprint:" + result);  
  170. }  
31 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. VPrinter printer = ToshibaMFP.getInstance().getPrinterByIpAddress(  
  2.                 printIp);  
  3.         String cardId = null;  
  4.         if (printer != null) {  
  5.             cardId = null;  
  6.             if (printer.currentCardId != null) {  
  7.                 PrintWriter out = null;  
  8.                 cardId = printer.currentCardId;  
  9.                 printer.currentCardId = null;  
  10.                 try {  
  11.                     out = response.getWriter();  
  12.                     out.print(cardId);  
  13.                 } catch (Exception e) {  
  14.                     e.printStackTrace();  
  15.                 } finally {  
  16.                     if (out != null) {  
  17.                         out.flush();  
  18.                         out.close();  
  19.                     }  
  20.                 }  
  21.             } else {  
  22.                 PrintWriter out = null;  
  23.                 try {  
  24.                     out = response.getWriter();  
  25.                     out.print(cardId);  
  26.                 } catch (Exception e) {  
  27.                     e.printStackTrace();  
  28.                 } finally {  
  29.                     if (out != null) {  
  30.                         out.flush();  
  31.                         out.close();  
  32.                     }  
  33.                 }  
  34.             }  
  35.         } else {  
  36.             PrintWriter out = null;  
  37.             try {  
  38.                 out = response.getWriter();  
  39.                 out.print(cardId);  
  40.             } catch (Exception e) {  
  41.                 e.printStackTrace();  
  42.             } finally {  
  43.                 if (out != null) {  
  44.                     out.flush();  
  45.                     out.close();  
  46.                 }  
  47.             }  
  48.         }  
30 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. function passCard(){  
  2.             $.ajax({  
  3.              url:‘/toshibamfp/servlet/PassCardServlet‘,  
  4.              type:‘post‘,  
  5.              dataType:‘text‘,  
  6.               timeout: 1000,   
  7.              error: function(){  
  8.              },  
  9.              success:function(data){  
  10.                     if("null"==data){  
  11.                     }else{  
  12.                         window.clearInterval(intervalID);    
  13.                          window.location.href="/toshibamfp/wvga/mdsNewCard.jsp?cardId="+data;   
  14.                     }  
  15.              }  
  16.          });  
  17.          }  
29 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. public void unSubscribeUserEvent(VPrinter printer) throws RemoteException{  
  2.         try {  
  3.             AddressListType address = new AddressListType();  
  4.             address.setAddress(new String[]{ToshibaMFP.getInstance().fetchUserEventUrl()});  
  5.             UserEventNameListType eventList = new UserEventNameListType();  
  6.             eventList.addEventName(UserEventNameType.LogIn);  
  7.             eventList.addEventName(UserEventNameType.LogOut);  
  8.             eventList.addEventName(UserEventNameType.CardReading);  
  9.               
  10.             UnsubscribeUserEvent event = new UnsubscribeUserEvent();  
  11.             event.setEventNameList(eventList);  
  12.             event.setAddressList(address);  
  13.             this.fetchSoapPort(printer.ipAddress).unsubscribeUserEvent(event, printer.token);  
  14.         } catch (EBridgeServiceException e) {  
  15.             logger.debug("No user event registered for unsubscribe");  
  16.         }  
  17.     }  
28 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. if("ReleaseSelected".equalsIgnoreCase(actionType)){  
  2.             List<String> jobIdList = this.parseJobIdList(jobListStr);  
  3.             if(jobIdList.size() >0){  
  4.                 ToshibaMFP.getInstance().httpService.releaseJobList(printer, user, jobIdList);  
  5.             }  
  6.             resp.sendRedirect("/toshibamfp/"+screenPrefix+"/printlist.jsp?userName=" + user.userName + "&serialNumber=" + printer.serialNumber + "&currentPage=" + currentPage);  
  7.         }else if("ReleaseAll".equalsIgnoreCase(actionType)){  
  8.             ToshibaMFP.getInstance().httpService.releaseAllJobs(serialNumber, user);  
  9.             resp.sendRedirect("/toshibamfp/" + screenPrefix + "/printlist.jsp?userName=" + user.userName + "&serialNumber=" + printer.serialNumber);  
  10.         }else if("DeleteSelected".equalsIgnoreCase(actionType)){  
  11.             List<String> jobIdList = this.parseJobIdList(jobListStr);  
  12.             ToshibaMFP.getInstance().httpService.cancelJobs(jobIdList);  
  13.             resp.sendRedirect("/toshibamfp/" + screenPrefix + "/printlist.jsp?userName=" + user.userName + "&serialNumber=" + printer.serialNumber + "&currentPage=" + currentPage);  
  14.         }else if("DeleteAll".equalsIgnoreCase(actionType)){  
  15.             List<String> jobIdList = this.parseJobIdList(jobListStr);  
  16.             ToshibaMFP.getInstance().httpService.cancelJobs(jobIdList);  
  17.             resp.sendRedirect("/toshibamfp/" + screenPrefix + "/printlist.jsp?userName=" + user.userName + "&serialNumber=" + printer.serialNumber);  
  18.         }else if("Refresh".equalsIgnoreCase(actionType)){  
  19.             resp.sendRedirect("/toshibamfp/" + screenPrefix + "/printlist.jsp?userName=" + user.userName + "&serialNumber=" + printer.serialNumber);  
  20.         }else if("View".equalsIgnoreCase(actionType)){  
  21.             resp.sendRedirect("/toshibamfp/" + screenPrefix + "/mdsViewContent.jsp?require_page=1&job_type=PRINT&job_id=" + jobId + "&currentPage=" + currentPage + "&selectJobList=" + jobListStr+"&userName=" + user.userName + "&serialNumber=" + printer.serialNumber);  
  22.         }  
27 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. String result=ToshibaMFP.getInstance().httpService.login(login_account, "", login_password, printer.serialNumber);  
  2.             //put user quota and level into loginUserInfo and turn to corresponding page,otherwise alert error dialog box  
  3.     if(result!=null&&result.startsWith("OK:")){  
  4.         //set quota into MDSuserInfo  
  5.         VUser user=VUser.assemblyByXml(result.substring(3));  
  6.         MDSUserInfoType userInfo=new MDSUserInfoType();  
  7.         userInfo.setName(user.userName);  
  8.         userInfo.setPassword(user.password);  
  9.         userInfo.setDomain(login_domain);   
  10.         userInfo.setUserID(user.userId);  
  11.         if(user.emailAddress!=null){  
  12.             userInfo.setEMailId(user.emailAddress);  
  13.         }  
  14.             //set departmentCode into MDSuserInfo  
  15.     if(user.departmentCode!=null){  
  16.         DepartmentDetailType departmentDetailType=new DepartmentDetailType();  
  17.                     StringListType dcodeList=new StringListType();  
  18.                     if(user.departmentCode.contains(",")){  
  19.                         String [] dclist=user.departmentCode.split(",");  
  20.                         dcodeList.setItem(dclist);  
  21.                     }else if(user.departmentCode.contains(";")){  
  22.                         String [] dclist=user.departmentCode.split(";");  
  23.                         dcodeList.setItem(dclist);  
  24.                     }else{  
  25.                         dcodeList.addItem(user.departmentCode);  
  26.                     }  
  27.                     departmentDetailType.setDepartmentCodeList(dcodeList);  
  28.                     userInfo.setDepartment(departmentDetailType);  
  29.                 }  
  30.                   
  31.                 // quotaSetting       
  32.                 if(user.copyQuotaEnabled){  
  33.                     if(user.commonAccountEnable||user.colorAccountEnable||user.monoAccountEnable){  
  34.                         QuotaCategoryType quotaCategoryType=new QuotaCategoryType();  
  35.                         QuotaType colorquotaType=new QuotaType();  
  36.                         colorquotaType.setQuota(String.valueOf(user.leftColorCopyImpression));  
  37.                         QuotaType monoquoQuotaType=new QuotaType();  
  38.                         monoquoQuotaType.setQuota(String.valueOf(user.leftMonoCopyImpression));  
  39.                         quotaCategoryType.setTotal(colorquotaType);  
  40.                         quotaCategoryType.setTotal(monoquoQuotaType);  
  41.                         userInfo.setQuota(quotaCategoryType);  
  42.                     }  
  43.                 }  
  44.                 StringListType permissionList =new StringListType();   
  45.                   
  46.                 ArrayList<String> pList=new ArrayList<>();  
  47.                   
  48.                 //get the authority from VUser,and put them into permissionList of MDSuserInfo  
  49.                 //copy  
  50.                 if(user.monoCopyFeature){  
  51.                     permissionList.addItem("CopyJob");  
  52.                 }  
  53.                 //print  
  54.                 if(user.monoPrintFeature){  
  55.                     permissionList.addItem("PrintJob");  
  56.                 }  
  57.                 //scan  
  58.                 if(user.scanFeature){  
  59.                     permissionList.addItem("RemoteScan");  
  60.                     permissionList.addItem("StoreToLocalStrorage");  
  61.                     permissionList.addItem("SendEmail");  
  62.                 }  
  63.                 //colorPrint  
  64.                 if(user.colorPrintFeature&&user.colorCopyFeature){  
  65.                     permissionList.addItem("ColorPrint");  
  66.                 }  
  67.                 //fax  
  68.                 if(user.faxFeature){  
  69.                     permissionList.addItem("FaxTransmission");  
  70.                     permissionList.addItem("FaxReceivedPrint");  
  71.                     permissionList.addItem("FaxReceivedPrint");  
  72.                 }  
  73.                 permissionList.addItem("PrintManagement");  
  74.                 permissionList.addItem("JobOperation");  
  75.                 //must add EWBAccess into permissionList or could not reach mdsPrintList  
  76.                 permissionList.addItem("EWBAccess");  
  77.                 userInfo.setPermissionList(permissionList);  
  78.                   
  79.               
  80.                 //call loginMDS  
  81.                 String soapConstant=":49629/OutputManagementService";  
  82.                 String fullUrl = "http://" + printIp + soapConstant;  
  83.                 OutputManagementServiceStub port=new OutputManagementServiceStub(fullUrl);  
  84.                 //set currentUserName on printer  
  85.                 printer.currentUserName=user.userName;  
  86.                 LoginMDS loginMDS=new LoginMDS();  
  87.                 loginMDS.setMDSUserInfo(userInfo);  
  88.                 try {  
  89.                     LoginMDSResponse mdsResponse=port.loginMDS(loginMDS);  
  90.                 }  catch (RemoteException e) {  
  91.                     logger.error("Login failed:" + e.getMessage());  
  92.                 }  
  93.                 catch (jp.co.toshibatec.www.e_studio.outputmanagementservice.EBridgeServiceException e) {  
  94.                     // TODO: handle exception  
  95.                     logger.info("Login failed from sysprint:"+e);  
  96.                 }  
  97.                 VUser vUser=ToshibaMFP.getInstance().getUserByName(login_account);  
  98.                 if((vUser.allowSelectLevel && vUser.levelList != null && vUser.levelList.size() > 0)||(null!=vUser.projectList&& vUser.projectList.size() > 0)){  
  99.                     if("SVGA".equalsIgnoreCase(screenType)){  
  100.                         resp.sendRedirect("/toshibamfp/svga/projectlist.jsp?userName="+login_account+"&serialNumber="+printer.serialNumber);  
  101.                     }else{  
  102.                         resp.sendRedirect("/toshibamfp/wvga/projectlist.jsp?userName="+login_account+"&serialNumber="+printer.serialNumber);  
  103.                     }  
  104.                 }else{  
  105.                     if("SVGA".equalsIgnoreCase(screenType)){  
  106.                         resp.sendRedirect("/toshibamfp/svga/mdsPrintList.jsp?userName="+login_account+"&serialNumber="+printer.serialNumber);  
  107.                     }else{  
  108.                         resp.sendRedirect("/toshibamfp/wvga/mdsPrintList.jsp?userName="+login_account+"&serialNumber="+printer.serialNumber);  
  109.                     }  
  110.                 }  
  111.             }else{  
  112.                 if("SVGA".equalsIgnoreCase(screenType)){  
  113.                     resp.sendRedirect("/toshibamfp/svga/toshibaLogin.jsp?userInfoNotCorrect=yes");  
  114.                 }else{  
  115.                     resp.sendRedirect("/toshibamfp/wvga/toshibaLogin.jsp?userInfoNotCorrect=yes");  
  116.                 }  
  117.                   
  118.                 // TODO userName or passWord was not correct,alert info and refresh the web page  
  119.                 logger.info("Login failed from sysprint:"+result);    
  120.             }         
  121.               
  122.         }  
  123.   
  124.   
  125.   
  126. String actionType = req.getParameter("actionType");  
  127.         String jobListStr = CommonUtil.convertNull(req.getParameter("selectJobList"));  
  128.         String userName = req.getParameter("userName");  
  129.         String serialNumber = req.getParameter("serialNumber");  
  130.         String currentPage = req.getParameter("currentPage");  
  131.         String jobId = req.getParameter("job_id");  
  132.           
  133.         VUser user = ToshibaMFP.getInstance().getUserByName(userName);  
  134.         VPrinter printer = ToshibaMFP.getInstance().getPrinterBySerialNumber(serialNumber);  
  135.         String screenPrefix = "wvga";  
  136.         if("SVGA".equalsIgnoreCase(printer.screenType)){  
  137.             screenPrefix = "svga";  
  138.         }  
  139.   
  140. 2)若操作类型为Release,则释放所有任务,并根据显示类型重定向到打印列表。  
  141. if("Release".equalsIgnoreCase(actionType)){  
  142.             List<String> jobIdList = new ArrayList<String>();  
  143.             jobIdList.add(jobId);  
  144.             ToshibaMFP.getInstance().httpService.releaseJobList(printer, user, jobIdList);  
  145.             if(jobListStr.contains(":" + jobId)){  
  146.                 jobListStr = jobListStr.replaceAll(":" + jobId, "");  
  147.             }     
  148.             resp.sendRedirect("/toshibamfp/" + screenPrefix + "/printlist.jsp?userName=" + user.userName + "&serialNumber=" + printer.serialNumber + "&currentPage=" + currentPage + "&selectJobList=" + jobListStr);  
  149.         }  
26 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. String screenType="WVGA";  
  2.         login_account=login_account.toUpperCase();  
  3.         if(displaySize.contains("600")){  
  4.             screenType="SVGA";  
  5.         }  
  6.         if(null!=printer){  
  7.             printer.screenType=screenType;  
  8.         }  
25 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. //get userAccout and passWord from wed page  
  2.         String login_account=req.getParameter("login_account");  
  3.         String login_password=req.getParameter("login_password");  
  4.         String login_domain=req.getParameter("login_domain");  
  5.           
  6.         //get printer by printerIp or printerSerialNumber  
  7.         String printIp=req.getRemoteAddr();  
  8.         VPrinter printer=ToshibaMFP.getInstance().getPrinterByIpAddress(printIp);  
  9.         if(null==printer){  
  10.             String serialNumber=CommonUtil.getSerialNumberByIp(printIp);  
  11.             printer=ToshibaMFP.getInstance().getPrinterBySerialNumber(serialNumber);  
  12.             printer.serialNumber=serialNumber;  
  13.         }  
  14.         if(CommonUtil.isBlank(printer.serialNumber)){  
  15.             printer.serialNumber=CommonUtil.getSerialNumberByIp(printIp);  
  16.         }  
  17.         if(printer.currentUserName!=null){  
  18.             printer.currentUserName=null;  
  19.         }  
  20.       
  21.         String printName=req.getHeader("X-EWB-ModelName");  
  22.         String displaySize = req.getHeader("X-EWB-DisplaySize");  
  23.         logger.warn("Receive X-EWB-UserName:" + printName + " X-EWB-DisplaySize:" + displaySize);  
24 楼 wd530141534 2016-05-05  
Java代码  技术图片
  1. //get all printers in SysPrint  
  2. if(!ToshibaMFP.getInstance().isInitial){  
  3.     List<VPrinter>printerList=ToshibaMFP.getInstance().httpService.fetchAllToshibaPrinters();  
  4.     ToshibaMFP.getInstance().addPrinters(printerList);  
  5.     ToshibaMFP.getInstance().isInitial=true;  
  6. }  
23 楼 wangsangwu 2016-02-24  

以上是关于Axis2创建WebService实例的主要内容,如果未能解决你的问题,请参考以下文章

Axis2使用WebService的客户端实例

AXIS2+Myeclipse实现WebService数据库存储简单实例

webserive学习记录3-eclipse创建webservice

AXIS2+Myeclipse实现WebService数据库存储简单实例

axis2 webservice入门知识(JS,Java,PHP调用实例源码)

使用Axis2方式发布webService实例说明