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安装目录>\webapps\axis2\WEB-INF\pojo目录中
  (如果没有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安装目录>\webapps\axis2\WEB-INF\conf\axis2.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安装目录>\webapps\axis2\WEB-INF\my目录中发布WebService。
   例如,将本例中的HelloService.class复制到my目录中也可以成功发布
   (但要删除pojo目录中的SimpleService.class,否则WebService会重名)。

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

用Axis2实现Web Service,虽然可以将POJO类放在axis2\WEB-INF\pojo目录中直接发布成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\ com\sinosoft\webservice\HelloServiceNew.class
  D:\ws\META-INF\services.xml
  在windows控制台中进入ws目录,并输入如下的命令生成.aar文件.

jar cvf ws.aar .

实际上,.jar文件也可以发布webservice,但axis2官方文档中建议使用.aar文件发布webservice.
  最后将ws.aar文件复制到<Tomcat安装目录>\webapps\axis2\WEB-INF\services目录中,
  启动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%\bin\wsdl2java -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%?原因竟是...

分享到:  

Ext树操作事例 | Oracle的导入导出

评论

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. function press2(e)
  7. {
  8. var releaseCode = document.getElementById("release_code");
  9. releaseCode.value = releaseCode.value + ‘2‘;
  10. }
  11. function press3(e)
  12. {
  13. var releaseCode = document.getElementById("release_code");
  14. releaseCode.value = releaseCode.value + ‘3‘;
  15. }
  16. function press4(e)
  17. {
  18. var releaseCode = document.getElementById("release_code");
  19. releaseCode.value = releaseCode.value + ‘4‘;
  20. }
  21. function press5(e)
  22. {
  23. var releaseCode = document.getElementById("release_code");
  24. releaseCode.value = releaseCode.value + ‘5‘;
  25. }
  26. function press6(e)
  27. {
  28. var releaseCode = document.getElementById("release_code");
  29. releaseCode.value = releaseCode.value + ‘6‘;
  30. }
  31. function press7(e)
  32. {
  33. var releaseCode = document.getElementById("release_code");
  34. releaseCode.value = releaseCode.value + ‘7‘;
  35. }
  36. function press8(e)
  37. {
  38. var releaseCode = document.getElementById("release_code");
  39. releaseCode.value = releaseCode.value + ‘8‘;
  40. }
  41. function press9(e)
  42. {
  43. var releaseCode = document.getElementById("release_code");
  44. releaseCode.value = releaseCode.value + ‘9‘;
  45. }
  46. function press0(e)
  47. {
  48. var releaseCode = document.getElementById("release_code");
  49. releaseCode.value = releaseCode.value + ‘0‘;
  50. }
  51. function releaseCode(e)
  52. {
  53. var releaseCode = document.getElementById("release_code");
  54. if(releaseCode.value != ‘‘)
  55. {
  56. document.getElementById("action_form").submit();
  57. }
  58. }
  59. function backspace(e)
  60. {
  61. var releaseCode = document.getElementById("release_code");
  62. if(releaseCode.value != ‘‘)
  63. {
  64. releaseCode.value = releaseCode.value.substring(0,releaseCode.value.length-1);
  65. }
  66. }
  67. <tr height="75px;">
  68. <td><button type="button" class="numButton" onclick="press1(event)"><font color="black" size="6">1</font></button></td>
  69. <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>
  70. <td><button type="button" class="numButton" onclick="press3(event)"><font color="black" size="6">3</font></button></td>
  71. </tr>
  72. <tr height="75px;">
  73. <td><button type="button" class="numButton" onclick="press4(event)"><font color="black" size="6">4</font></button></td>
  74. <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>
  75. <td><button type="button" class="numButton" onclick="press6(event)"><font color="black" size="6">6</font></button></td>
  76. </tr>
  77. <tr height="75px;">
  78. <td><button type="button" class="numButton" onclick="press7(event)"><font color="black" size="6">7</font></button></td>
  79. <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>
  80. <td><button type="button" class="numButton" onclick="press9(event)"><font color="black" size="6">9</font></button></td>
  81. </tr>
  82. <tr height="75px;">
  83. <td><button type="button" class="numButton" onclick="press0(event)"><font color="black" size="6">0</font></button></td>
  84. <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>
  85. <td><button type="button" class="okButton" onclick="releaseCode(event)"><font color="white" size="5"><%=ToshibaMFP.getInstance().resourceService.getMessageByID(language,"Confirm")%></font></button></td>
  86. </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. // quotaSetting
  42. if (user.copyQuotaEnabled) {
  43. if (user.commonAccountEnable || user.colorAccountEnable
  44. || user.monoAccountEnable) {
  45. QuotaCategoryType quotaCategoryType = new QuotaCategoryType();
  46. QuotaType colorquotaType = new QuotaType();
  47. colorquotaType.setQuota(String
  48. .valueOf(user.leftColorCopyImpression));
  49. QuotaType monoquoQuotaType = new QuotaType();
  50. monoquoQuotaType.setQuota(String
  51. .valueOf(user.leftMonoCopyImpression));
  52. quotaCategoryType.setTotal(colorquotaType);
  53. quotaCategoryType.setTotal(monoquoQuotaType);
  54. userInfo.setQuota(quotaCategoryType);
  55. }
  56. }
  57. StringListType permissionList = new StringListType();
  58. ArrayList<String> pList = new ArrayList<>();
  59. // get the authority from VUser,and put them into permissionList of// MDSuserInfo
  60. // copy
  61. if (user.monoCopyFeature) {
  62. permissionList.addItem("CopyJob");
  63. }
  64. // print
  65. if (user.monoPrintFeature) {
  66. permissionList.addItem("PrintJob");
  67. }
  68. // scan
  69. if (user.scanFeature) {
  70. permissionList.addItem("RemoteScan");
  71. permissionList.addItem("StoreToLocalStrorage");
  72. permissionList.addItem("SendEmail");
  73. }
  74. // colorPrint
  75. if (user.colorPrintFeature && user.colorCopyFeature) {
  76. permissionList.addItem("ColorPrint");
  77. }
  78. // fax
  79. if (user.faxFeature) {
  80. permissionList.addItem("FaxTransmission");
  81. permissionList.addItem("FaxReceivedPrint");
  82. permissionList.addItem("FaxReceivedPrint");
  83. }
  84. permissionList.addItem("PrintManagement");
  85. permissionList.addItem("JobOperation");
  86. // must add EWBAccess into permissionList or could not reach
  87. // mdsPrintList
  88. permissionList.addItem("EWBAccess");
  89. userInfo.setPermissionList(permissionList);
  90. // call loginMDS
  91. String soapConstant = ":49629/OutputManagementService";
  92. String fullUrl = "http://" + printer.ipAddress + soapConstant;
  93. OutputManagementServiceStub port = new OutputManagementServiceStub(
  94. fullUrl);
  95. // set currentUserName on printer
  96. printer.currentUserName = user.userName;
  97. LoginMDS loginMDS = new LoginMDS();
  98. loginMDS.setMDSUserInfo(userInfo);
  99. try {
  100. LoginMDSResponse mdsResponse = port.loginMDS(loginMDS);
  101. } catch (RemoteException e) {
  102. logger.error("Login failed:" + e.getMessage());
  103. } catch (jp.co.toshibatec.www.e_studio.outputmanagementservice.EBridgeServiceException e) {
  104. // TODO: handle exception
  105. logger.info("Login failed from sysprint:" + e);
  106. }
  107. VUser vUser = ToshibaMFP.getInstance().getUserByName(loginAccount);
  108. if (!printer.gs1020) {
  109. ToshibaMFP.getInstance().httpService.releaseAllJobs(
  110. printer.serialNumber, vUser);
  111. } else if (!vUser.mfpDirectPrint) {
  112. if ((vUser.allowSelectLevel && vUser.levelList != null && vUser.levelList
  113. .size() > 0)
  114. || (null != vUser.projectList && vUser.projectList
  115. .size() > 0)) {
  116. if ("SVGA".equalsIgnoreCase(screenType)) {
  117. resp.sendRedirect("/toshibamfp/svga/projectlist.jsp?userName="
  118. + loginAccount
  119. + "&serialNumber="
  120. + printer.serialNumber);
  121. } else {
  122. resp.sendRedirect("/toshibamfp/wvga/projectlist.jsp?userName="
  123. + loginAccount
  124. + "&serialNumber="
  125. + printer.serialNumber);
  126. }
  127. } else {
  128. if ("SVGA".equalsIgnoreCase(screenType)) {
  129. resp.sendRedirect("/toshibamfp/svga/mdsPrintList.jsp?userName="
  130. + loginAccount
  131. + "&serialNumber="
  132. + printer.serialNumber);
  133. } else {
  134. resp.sendRedirect("/toshibamfp/wvga/mdsPrintList.jsp?userName="
  135. + loginAccount
  136. + "&serialNumber="
  137. + printer.serialNumber);
  138. }
  139. }
  140. } else {
  141. logger.info("Direct print");
  142. ToshibaMFP.getInstance().httpService.releaseAllJobs(
  143. printer.serialNumber, vUser);
  144. }
  145. } else {
  146. if ("SVGA".equalsIgnoreCase(screenType)) {
  147. resp.sendRedirect("/toshibamfp/svga/newcard.jsp?cardId="
  148. + cardId
  149. + "&language="
  150. + MfpConfigure.getInstance().getProperty(
  151. CommonConstant.PARAM_DEFAULT_LANGUAGE)
  152. + "&screenType=" + screenType + "&serialNumber="
  153. + serialNumber);
  154. } else {
  155. resp.sendRedirect("/toshibamfp/wvga/newcard.jsp?cardId="
  156. + cardId
  157. + "&language="
  158. + MfpConfigure.getInstance().getProperty(
  159. CommonConstant.PARAM_DEFAULT_LANGUAGE)
  160. + "&screenType=" + screenType + "&serialNumber="
  161. + serialNumber);
  162. }
  163. // TODO userName or passWord was not correct,alert info and refresult
  164. logger.info("Login failed from sysprint:" + result);
  165. }

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. UnsubscribeUserEvent event = new UnsubscribeUserEvent();
  10. event.setEventNameList(eventList);
  11. event.setAddressList(address);
  12. this.fetchSoapPort(printer.ipAddress).unsubscribeUserEvent(event, printer.token);
  13. } catch (EBridgeServiceException e) {
  14. logger.debug("No user event registered for unsubscribe");
  15. }
  16. }

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. // quotaSetting
  31. if(user.copyQuotaEnabled){
  32. if(user.commonAccountEnable||user.colorAccountEnable||user.monoAccountEnable){
  33. QuotaCategoryType quotaCategoryType=new QuotaCategoryType();
  34. QuotaType colorquotaType=new QuotaType();
  35. colorquotaType.setQuota(String.valueOf(user.leftColorCopyImpression));
  36. QuotaType monoquoQuotaType=new QuotaType();
  37. monoquoQuotaType.setQuota(String.valueOf(user.leftMonoCopyImpression));
  38. quotaCategoryType.setTotal(colorquotaType);
  39. quotaCategoryType.setTotal(monoquoQuotaType);
  40. userInfo.setQuota(quotaCategoryType);
  41. }
  42. }
  43. StringListType permissionList =new StringListType();
  44. ArrayList<String> pList=new ArrayList<>();
  45. //get the authority from VUser,and put them into permissionList of MDSuserInfo
  46. //copy
  47. if(user.monoCopyFeature){
  48. permissionList.addItem("CopyJob");
  49. }
  50. //print
  51. if(user.monoPrintFeature){
  52. permissionList.addItem("PrintJob");
  53. }
  54. //scan
  55. if(user.scanFeature){
  56. permissionList.addItem("RemoteScan");
  57. permissionList.addItem("StoreToLocalStrorage");
  58. permissionList.addItem("SendEmail");
  59. }
  60. //colorPrint
  61. if(user.colorPrintFeature&&user.colorCopyFeature){
  62. permissionList.addItem("ColorPrint");
  63. }
  64. //fax
  65. if(user.faxFeature){
  66. permissionList.addItem("FaxTransmission");
  67. permissionList.addItem("FaxReceivedPrint");
  68. permissionList.addItem("FaxReceivedPrint");
  69. }
  70. permissionList.addItem("PrintManagement");
  71. permissionList.addItem("JobOperation");
  72. //must add EWBAccess into permissionList or could not reach mdsPrintList
  73. permissionList.addItem("EWBAccess");
  74. userInfo.setPermissionList(permissionList);
  75. //call loginMDS
  76. String soapConstant=":49629/OutputManagementService";
  77. String fullUrl = "http://" + printIp + soapConstant;
  78. OutputManagementServiceStub port=new OutputManagementServiceStub(fullUrl);
  79. //set currentUserName on printer
  80. printer.currentUserName=user.userName;
  81. LoginMDS loginMDS=new LoginMDS();
  82. loginMDS.setMDSUserInfo(userInfo);
  83. try {
  84. LoginMDSResponse mdsResponse=port.loginMDS(loginMDS);
  85. }  catch (RemoteException e) {
  86. logger.error("Login failed:" + e.getMessage());
  87. }
  88. catch (jp.co.toshibatec.www.e_studio.outputmanagementservice.EBridgeServiceException e) {
  89. // TODO: handle exception
  90. logger.info("Login failed from sysprint:"+e);
  91. }
  92. VUser vUser=ToshibaMFP.getInstance().getUserByName(login_account);
  93. if((vUser.allowSelectLevel && vUser.levelList != null && vUser.levelList.size() > 0)||(null!=vUser.projectList&& vUser.projectList.size() > 0)){
  94. if("SVGA".equalsIgnoreCase(screenType)){
  95. resp.sendRedirect("/toshibamfp/svga/projectlist.jsp?userName="+login_account+"&serialNumber="+printer.serialNumber);
  96. }else{
  97. resp.sendRedirect("/toshibamfp/wvga/projectlist.jsp?userName="+login_account+"&serialNumber="+printer.serialNumber);
  98. }
  99. }else{
  100. if("SVGA".equalsIgnoreCase(screenType)){
  101. resp.sendRedirect("/toshibamfp/svga/mdsPrintList.jsp?userName="+login_account+"&serialNumber="+printer.serialNumber);
  102. }else{
  103. resp.sendRedirect("/toshibamfp/wvga/mdsPrintList.jsp?userName="+login_account+"&serialNumber="+printer.serialNumber);
  104. }
  105. }
  106. }else{
  107. if("SVGA".equalsIgnoreCase(screenType)){
  108. resp.sendRedirect("/toshibamfp/svga/toshibaLogin.jsp?userInfoNotCorrect=yes");
  109. }else{
  110. resp.sendRedirect("/toshibamfp/wvga/toshibaLogin.jsp?userInfoNotCorrect=yes");
  111. }
  112. // TODO userName or passWord was not correct,alert info and refresh the web page
  113. logger.info("Login failed from sysprint:"+result);
  114. }
  115. }
  116. String actionType = req.getParameter("actionType");
  117. String jobListStr = CommonUtil.convertNull(req.getParameter("selectJobList"));
  118. String userName = req.getParameter("userName");
  119. String serialNumber = req.getParameter("serialNumber");
  120. String currentPage = req.getParameter("currentPage");
  121. String jobId = req.getParameter("job_id");
  122. VUser user = ToshibaMFP.getInstance().getUserByName(userName);
  123. VPrinter printer = ToshibaMFP.getInstance().getPrinterBySerialNumber(serialNumber);
  124. String screenPrefix = "wvga";
  125. if("SVGA".equalsIgnoreCase(printer.screenType)){
  126. screenPrefix = "svga";
  127. }
  128. (2)若操作类型为Release,则释放所有任务,并根据显示类型重定向到打印列表。
  129. if("Release".equalsIgnoreCase(actionType)){
  130. List<String> jobIdList = new ArrayList<String>();
  131. jobIdList.add(jobId);
  132. ToshibaMFP.getInstance().httpService.releaseJobList(printer, user, jobIdList);
  133. if(jobListStr.contains(":" + jobId)){
  134. jobListStr = jobListStr.replaceAll(":" + jobId, "");
  135. }
  136. resp.sendRedirect("/toshibamfp/" + screenPrefix + "/printlist.jsp?userName=" + user.userName + "&serialNumber=" + printer.serialNumber + "&currentPage=" + currentPage + "&selectJobList=" + jobListStr);
  137. }

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. //get printer by printerIp or printerSerialNumber
  6. String printIp=req.getRemoteAddr();
  7. VPrinter printer=ToshibaMFP.getInstance().getPrinterByIpAddress(printIp);
  8. if(null==printer){
  9. String serialNumber=CommonUtil.getSerialNumberByIp(printIp);
  10. printer=ToshibaMFP.getInstance().getPrinterBySerialNumber(serialNumber);
  11. printer.serialNumber=serialNumber;
  12. }
  13. if(CommonUtil.isBlank(printer.serialNumber)){
  14. printer.serialNumber=CommonUtil.getSerialNumberByIp(printIp);
  15. }
  16. if(printer.currentUserName!=null){
  17. printer.currentUserName=null;
  18. }
  19. String printName=req.getHeader("X-EWB-ModelName");
  20. String displaySize = req.getHeader("X-EWB-DisplaySize");
  21. 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

原文地址:https://www.cnblogs.com/zhoading/p/10558533.html

时间: 2024-10-08 10:59:05

Axis2创建WebService实例的相关文章

XFire创建WebService实例

XFire创建WebService实例应用 XFire使得在JavaEE应用中发布Web服务变得轻而易举.和其他Web服务引擎相比, XFire的配置非常简单,可以非常容易地和Spring集成. 下载地址:http://xfire.codehaus.org/Download. 一. 使用XFire发布WebService    1. 创建service接口 package com.test.service; import com.test.service.bean.User; public in

使用axis2创建webservice

这个方式创建的webservice可以和web项目放到同一个工程下. 创建webservice服务,所需要的jar包如下: axiom-api-1.2.8.jar axiom-impl-1.2.8.jar axis-0.1.jar axis2-adb-1.5.jar axis2-kernel-1.5.jar axis2-transport-http-1.5.jar axis2-transport-local-1.5.jar commons-codec-1.3.jar commons-httpcl

Eclipse+Axis2创建WebService和相应的客户端调用

一.工具介绍 eclipse(luna) + axis2-1.6.3 二.在Eclipse里面配置Axis2 1.下载最新版的axis2 下载地址为:http://axis.apache.org/axis2/java/core/download.cgi 2.在Eclipse中配置Axis2: Window—>Preferences,安装下图中进行设置: 其中图右中的location对应已下载到本地的axis2的路径地址 三.创建.发布WebService: 1.创建一个Dynamic Web P

如何使用C#创建WebService

使用C#创建WebService,服务端的webservice是必须,中间的soap,Xml我们不用去关心.下面是使用C#创建WebService的简单介绍. AD:51CTO技术沙龙 | 赋予APP不同凡响的交互和体验>> C#学习到一定程度会涉及到C#创建WebService的一些高阶知识,本文试图对此做一个简单的介绍. 假设A是客户端,B是webservice服务端,用户通过http协议向服务器发送soap请求,webservice返回客户端Xml格式的数据. 现在我们看一看创建一个C#

一个php创建webservice,并通过c#调用的真实实例

最近需要用php创建webservice供C#和JAVA来调用,通过3天的搜索和尝试,终于成功在C#下调用,JAVA的调用还没开始,为防止忘记,在这里记录下来全过程. 本文参考了许多文章,文中也采用了其中的示例. 本文目录如下 一.php创建webservice 二.生成.wsdl文件 三.c#调用php的webservice 一.php创建webservice 1.php环境 我用的是windows的apache,php.ini文件中 extension=php_soap.dll 去掉注释即可

用AXIS2发布WebService的方法(转)

Axis2+tomcat6.0 实现webService 服务端发布与客户端的调用. 第一步:首先要下载开发所需要的jar包 下载:axis2-1.6.1-war.zip http://www.apache.org/dist//axis/axis2/java/core/1.6.1/ 下载完后解压至tomcat安装目录下的webapps文件夹下,启动tomcat后,在webapps目录下会生成axis2文件夹. 访问http://localhost:8080/axis2/能看到以下页面表示axis

WebService学习之旅(六)使用Apache Axis2实现WebService客户端调用

上节介绍了如何使用Axis2 发布一个WebService,Axis2除了为我们编写WebService应用带来了便利,也同样简化的客户端调用的过程,本节在上节的基础上使用Axis2自带的工具生成客户端调用辅助类,并实现客户端调用代码的编写. 1.將前面下载的axis2-1.7.1-bin.zip解压,新建一个环境变量AXIS2_HOME,值为解压后目录路径.接着在path变量中添加%AXIS2_HOME%/bin;. 2.Eclipse中新建一个Java Project,打开Windows控制

Java中WebService实例

Web Services是由企业公布的完毕其特定商务需求的在线应用服务,其它公司或应用软件可以通过Internet来訪问并使用这项在线服务. Web Service的关键技术和规则: 1.XML:描写叙述数据的标准方法. 2.SOAP:表示信息交换的协议(简单对象訪问协议). 3.WSDL:Web服务描写叙述语言. 4.UDDI:通用描写叙述.发现与集成,他是一种独立于平台,基于XML语言的用于在互联网上描写叙述商务的协议. 一.利用JDK web服务api实现,这里使用基于SOAP messa

tomcat 用AXIS2发布WebService 网站的方法

Axis2+tomcat7.0 实现webService 服务端发布与客户端的调用. Aixs2开发webService的方法有很多,在此只介绍一种比较简单的实现方法. 第一步:首先要下载开发所需要的jar包 下载: axis2-1.6.2-war.zip  http://www.apache.org/dist//axis/axis2/Java/core/1.6.2/ 下载完后将axis2.war放至tomcat安装目录下的webapps文件夹下,然后启动tomcat后,在webapps目录下会