欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于 UAP 的 Web Service 开发

程序员文章站 2022-03-08 07:54:49
...

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版 

基于 UAP 的 Web Service 开发

    2.2新建UAP Business Component Project(65),Next 

基于 UAP 的 Web Service 开发

    2.3项目名自定义(规范:项目+模块),Module name模块名要求是当前UAP中存在的模块,此处以pu采购模块为例。
    选中项目右键,新建UAP Business Component(65),Next 

基于 UAP 的 Web Service 开发

    2.4组件名和显示名,此处以"pu","采购"为例
    Finish完成创建,此时项目结构如下,红色框内是创建项目生成,其他是创建组建生成。

基于 UAP 的 Web Service 开发

    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

基于 UAP 的 Web Service 开发

基于 UAP 的 Web Service 开发

    进入debug模式其实就证明接口开发成功了,可以看到request、response对象的相关属性等,单步调试到我们写的逻辑代码处,可以看到success对象的值为test,然后为SUCCESS,接口开发实现。

    1.5项目整体结构图 

基于 UAP 的 Web Service 开发

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

基于 UAP 的 Web Service 开发

    2.4.2勾选设置属性,填写组件名pu,此处测试接口开发,更多属性先不设置,这个不影响。根据接口查找对应的实现类。Finish 

基于 UAP 的 Web Service 开发

    2.4.3选择NC speci,Finish 

基于 UAP 的 Web Service 开发

    2.4.4此处测试接口开发,Web Service 的安全配置选项全不选,Finish 

基于 UAP 的 Web Service 开发

    2.4.5Finish 

基于 UAP 的 Web Service 开发

    2.4.6发布Web Service,发布成功后弹出提示框如下:

基于 UAP 的 Web Service 开发

    2.5此时项目结构图如下 

基于 UAP 的 Web Service 开发


    红色框内的wsdl文件是Web Service发布后生成的资源。此时接口开发已实现。重启中间件服务后,访问http://127.0.0.1:8035/uapws/service/,默认端口为80;可看到自己发布的ws。

    2.6导出补丁 

   2.6.1选中四个文件interface、impl、wsdl、upm,右键选择Export导出补丁。

基于 UAP 的 Web Service 开发

   2.6.2填写补丁名及部分属性,名称自定义

基于 UAP 的 Web Service 开发

    2.6.3Next 

基于 UAP 的 Web Service 开发

    2.6.4选择补丁导出的存放路径,可先放在桌面,然后在复制到对应模块下。

基于 UAP 的 Web Service 开发

    这里直接将补丁存放位置指定在pu(就是创建项目时指定的模块)的安装路径下。或者简单点直接把补丁导到桌面即可。

基于 UAP 的 Web Service 开发

    2.6.5Next 

基于 UAP 的 Web Service 开发

    2.6.6Finish 

基于 UAP 的 Web Service 开发

    2.6.7补丁导入详细 

    1>如果放在桌面,直接在桌面找到patch补丁压缩包(在\module\pu下就去pu下找),解压压缩包后有六个文件,如下图

基于 UAP 的 Web Service 开发

    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下

    准备好后如下图所示:

基于 UAP 的 Web Service 开发

    3>把\replacement\modules\pu的整个pu文件夹的内容放在NCHome的对应\modules\pu下,如果存在重复文件,替换重复内容。

    这就完成了把补丁放在对应模块下。如下图:

基于 UAP 的 Web Service 开发

    4>部署模块

    补丁打好后。进入NCHome下\bin\sysConfig.bat,双击该文件启动中间件,重新部署模块

    部署步骤(样图如下):选择部署 - 二阶段部署 - 勾选pu模块(项目最初创建时对应的模块) - 生成EJB - 部署EJB,部署成功后退出中间件。

    选择NCHome下的startup.bat文件,双击该文件重启服务。

基于 UAP 的 Web Service 开发

    2.7重启中间件 

    重启中间件不要使用开发环境UAP,否则在访问接口时报错如下图:

基于 UAP 的 Web Service 开发

    而是直接使用NCHome下的startup启动中间件服务。即非开发环境下重启中间件服务。双击NCHome下的startup.bat启动。

基于 UAP 的 Web Service 开发

    重启完成后,访问路径http://127.0.01:8035/uapws/service/,效果如下图所示说明接口发布成功,注意端口默认是80,我的是8035(我的360加速球快要炸了@aaa@qq.com)

基于 UAP 的 Web Service 开发


----------------------------------- THE END -----------------------------------