基于 UAP 的 Web Service 开发
IUAP之接口开发
一、前言
1.1说明
开发工具:UAP65
接口开发有很多实现方法,这里记录两种简单的实现方式。(因截图较多,所以显得篇幅较长)
接口开发需要将nc.uap.mde.wstools_1.0.3.jar包添加到eclipse/plugins下,就是UAP-STUDIO20151229132355\Platform\plugins下;
1.2名词解释
WebService
Web服务,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。常用于集成开发,因为它基于HTTP协议传输数据,支持运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,可相互交换数据或集成。
WSDL
Web服务描述语言(Web Service Description Language),它描述了Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;也就是描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。通常采用抽象语言描述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。
二、首先创建UAP Project
2.1此处选择的65版
2.2新建UAP Business Component Project(65),Next
2.3项目名自定义(规范:项目+模块),Module name模块名要求是当前UAP中存在的模块,此处以pu采购模块为例。
选中项目右键,新建UAP Business Component(65),Next
2.4组件名和显示名,此处以"pu","采购"为例
Finish完成创建,此时项目结构如下,红色框内是创建项目生成,其他是创建组建生成。
2.5文件代码
module.xml代码如下:
<?xml version="1.0" encoding="gb2312"?>
<module name="pu">
<public>
</public>
<private>
</private>
</module>
component.xml代码如下:
<component name="pu" displayname="采购">
<dependencies/>
</component>
三、接口开发
1.实现方式:Servlet+upm
1.1简单说明
就是Servlet和upm文件实现的接口开发;
1.2实现步骤
这个方式实现起来很简单,首先创建UAP项目。
在pu/src/private下新建class,命名自定义,此处包名:nc.bs.trans.servlet,类名:TransServlet;
使TransServlet实现UAP封装的接口nc.bs.framework.adaptor.IHttpServletAdaptor;
在META-INF下新建upm文件,命名自定义;
1.3文件代码
TransServlet.java代码如下:
package nc.bs.trans.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("restriction")
public class TransServlet implements
nc.bs.framework.adaptor.IHttpServletAdaptor {
// private final String TEST_LOAD="http://127.0.0.1:8035/servlet/TransServlet";
@Override
public void doAction(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String success = "test";
success = "SUCCESS";
}
}
PU_SERVLET.upm代码如下:
<?xml version="1.0" encoding='gb2312'?>
<module name="pu">
<public>
<component accessProtected="false" name="TransServlet" remote="false" singleton="true" tx="NONE" >
<implementation>nc.bs.trans.servlet.TransServlet</implementation>
</component>
</public>
<private>
</private>
</module>
1.4测试说明
在TransServlet.java的doAction方法中写一点逻辑代码,用来测试接口开发是否实现。在逻辑代码出打断点。
需要Debug As重启中间件服务,启动完成后,访问接口http://127.0.0.1:8035/servlet/TransServlet测试,我的端口为8035,如果没有修改的话默认为80。
在浏览器中访问接口,UAP中弹出提示框,点击确认进入debug
进入debug模式其实就证明接口开发成功了,可以看到request、response对象的相关属性等,单步调试到我们写的逻辑代码处,可以看到success对象的值为test,然后为SUCCESS,接口开发实现。
1.5项目整体结构图
2.实现方式:interface+impl+upm
2.1简单说明
就是接口及其实现类和upm文件实现的接口开发;
2.2实现步骤
也是首先创建UAP项目,当然还有组件。
在pu/src/public新建接口,包名:nc.itf.wstest.pu.xgang,接口名:IHelloWorld.java
在pu/src/private新建接口,包名:nc.impl.wstest.pu.xgang,接口名:HelloWorldImpl.java
在META-INF下新建upm文件,文件名Hello.upm
2.3文件代码
IHelloWorld.java代码如下(接口写个测试方法say):
package nc.itf.wstest.pu.xgang;
public interface IHelloWorld {
/**
* say hello BY ZYN 170822
* @param name
*/
public void hello(String name);
}
HelloWorldImpl.java代码如下:
package nc.impl.wstest.pu.xgang;
import nc.itf.wstest.pu.xgang.IHelloWorld;
public class HelloWorldImpl implements IHelloWorld {
@Override
public void hello(String name) {
System.out.print("sad");
}
}
Hello.upm文件如下:
<?xml version='1.0' encoding='UTF-8'?>
<module name="pu">
<public>
<component remote="true" singleton="true" tx="CMT">
<interface>nc.itf.wstest.pu.xgang.IHelloWorld</interface>
<implementation>nc.impl.wstest.pu.xgang.HelloWorldImpl</implementation>
</component>
</public>
<private>
</private>
</module>
2.4发布Web Service
2.4.1 选中接口右键选择WS Tools - Publish Web Service发布Web Service
在弹出框内选择Hello.upm文件,Finish
2.4.2勾选设置属性,填写组件名pu,此处测试接口开发,更多属性先不设置,这个不影响。根据接口查找对应的实现类。Finish
2.4.3选择NC speci,Finish
2.4.4此处测试接口开发,Web Service 的安全配置选项全不选,Finish
2.4.5Finish
2.4.6发布Web Service,发布成功后弹出提示框如下:
2.5此时项目结构图如下
红色框内的wsdl文件是Web Service发布后生成的资源。此时接口开发已实现。重启中间件服务后,访问http://127.0.0.1:8035/uapws/service/,默认端口为80;可看到自己发布的ws。
2.6导出补丁
2.6.1选中四个文件interface、impl、wsdl、upm,右键选择Export导出补丁。
2.6.2填写补丁名及部分属性,名称自定义
2.6.3Next
2.6.4选择补丁导出的存放路径,可先放在桌面,然后在复制到对应模块下。
这里直接将补丁存放位置指定在pu(就是创建项目时指定的模块)的安装路径下。或者简单点直接把补丁导到桌面即可。
2.6.5Next
2.6.6Finish
2.6.7补丁导入详细
1>如果放在桌面,直接在桌面找到patch补丁压缩包(在\module\pu下就去pu下找),解压压缩包后有六个文件,如下图
2>其中有个replacement,把其他文件都放在该文件夹得对应路径下;
1)把META-INF文件内容放在\replacement\modules\pu\META-INF下
2)把nc文件内容放在\replacement\modules\pu\classes下
3)把installpatch.xml、packmetadata.xml、readme.txt文件放在\replacement\modules\pu下
准备好后如下图所示:
3>把\replacement\modules\pu的整个pu文件夹的内容放在NCHome的对应\modules\pu下,如果存在重复文件,替换重复内容。
这就完成了把补丁放在对应模块下。如下图:
4>部署模块
补丁打好后。进入NCHome下\bin\sysConfig.bat,双击该文件启动中间件,重新部署模块。
部署步骤(样图如下):选择部署 - 二阶段部署 - 勾选pu模块(项目最初创建时对应的模块) - 生成EJB - 部署EJB,部署成功后退出中间件。
选择NCHome下的startup.bat文件,双击该文件重启服务。
2.7重启中间件
重启中间件不要使用开发环境UAP,否则在访问接口时报错如下图:
而是直接使用NCHome下的startup启动中间件服务。即非开发环境下重启中间件服务。双击NCHome下的startup.bat启动。
重启完成后,访问路径http://127.0.01:8035/uapws/service/,效果如下图所示说明接口发布成功,注意端口默认是80,我的是8035(我的360加速球快要炸了@aaa@qq.com)
----------------------------------- THE END -----------------------------------
上一篇: 苹果iOS 15已在路上:桌面更精简 老机型还能再战
下一篇: snapkit更新约束崩溃的问题