在 openfire 插件中编写自定义 Rest API
Posted
技术标签:
【中文标题】在 openfire 插件中编写自定义 Rest API【英文标题】:Write a custom Rest API in openfire plugin 【发布时间】:2018-01-22 13:20:40 【问题描述】:我已经完成了以下步骤,在 openfire 服务器中编写了我自己的自定义 rest api。
public class JerseyWrapper extends ServletContainer
private static final long serialVersionUID = 4807992231163442643L;
/** The Constant RESOURCE_CONFIG_CLASS_KEY. */
private static final String RESOURCE_CONFIG_CLASS_KEY = "com.sun.jersey.config.property.resourceConfigClass";
/** The Constant RESOURCE_CONFIG_CLASS. */
private static final String RESOURCE_CONFIG_CLASS = "com.sun.jersey.api.core.PackagesResourceConfig";
/** The config. */
private static Map<String, Object> config;
/** The prc. */
private static PackagesResourceConfig prc;
static
config = new HashMap<String, Object>();
config.put(RESOURCE_CONFIG_CLASS_KEY, RESOURCE_CONFIG_CLASS);
config.put("com.sun.jersey.api.json.POJOMappingFeature", true);
prc = new PackagesResourceConfig(JerseyWrapper.class.getPackage().getName());
prc.setPropertiesAndFeatures(config);
prc.getClasses().add(ContactManagementController.class);
/**
* Instantiates a new jersey wrapper.
*/
public JerseyWrapper()
super(prc);
@Override
public void init(ServletConfig servletConfig) throws ServletException
super.init(servletConfig);
@Override
public void destroy()
super.destroy();
@Path("restapi/v1/de/temp")
public class ContactManagementController
private final Logger LOGGER = LoggerFactory.getLogger(ContactManagementController.class);
@GET
@Produces( MediaType.APPLICATION_JSON )
public void getUsers()
LOGGER.info("Plugin called");
web-custom.xml 包含以下内容
<?xml version='1.0' encoding='ISO-8859-1'?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!-- Servlets -->
<servlet>
<servlet-name>JerseyWrapper</servlet-name>
<servlet-class>plugin.JerseyWrapper</servlet-class>
</servlet>
<!-- Servlet mappings -->
<servlet-mapping>
<servlet-name>JerseyWrapper</servlet-name>
<url-pattern>/de/*</url-pattern>
</servlet-mapping>
</web-app>
现在当我打电话给http://localhost/plugins/restapi/v1/de/temp
我收到 404 错误。
我已经为我的插件以及 Controller 和 web-custom.xml 编写了 JerseyWrapper。
我已将 jar 上传到 openfire 插件,但是当我点击 openfire 服务器时,我得到 404 响应
【问题讨论】:
嗨。我还需要在我的插件中创建一个 rest api,我也得到 404 错误。你解决了这个问题吗?是否有任何文档(mans)描述了如何将rest api添加到插件? @Path("messenger/de/hook") 在路径中添加插件文件夹名即可解决 【参考方案1】:很难判断出了什么问题。 Openfire 确实提供了实现 REST API 的插件。也许阻力最小的路径是复制这样的插件,删除你不需要的,并添加你做的?
【讨论】:
以上是关于在 openfire 插件中编写自定义 Rest API的主要内容,如果未能解决你的问题,请参考以下文章