# 1、在public端定義接口
```
package nc.app.rest;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import nc.bs.framework.adaptor.IHttpServletAdaptor;
import nc.bs.framework.common.NCLocator;
import nc.app.itf.IAppRestService;
public class AppRestHttpServlet implements IHttpServletAdaptor {
public void doAction(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 調用其他EJB接口
IAppRestService itf = NCLocator.getInstance().lookup(
IAppRestService.class);
Object data = itf.doAction(actionImpl.trim(),
(Map) json.get("params"));
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=UTF-8");
response.getWriter().print("調用成功");
}
}
```

# 2、新建upm文件用于發布接口
upm文件名在所屬模塊下不重復,只能是字母和數字且字母開頭。
訪問地址IP:PORT/service/appRest
> IP:PORT/service/ 是固定格式,加上 component 的name屬性即可
在開發工具內新建upm文件后會自動同步到配置的NCHOME/modules下當前項目對應模塊內
```
<?xml version='1.0' encoding='UTF-8'?>
<module name="pu20220220">
<public>
<component name="appRest" accessProtected="false" remote="false" singleton="true" tx="NONE">
<implementation>nc.app.rest.AppRestHttpServlet</implementation>
</component>
</public>
</module>
```


# 3、注意事項
## 3.1、 接口不生效
開發工具重啟后接口不生效,則需要去NCHOME里重新部署EJB

## 3.2 、http接口內操作多個表失敗事物不回滾
http接口是未啟用事物的,通常http接口內我們不做任何業務邏輯,只做接口鑒權和調用EJB接口,EJB接口啟用數據庫事物處理具體業務。