I have been using Openfire server 4.6.2, and the REST API plugin was version 1.10.2. I made some code modifications by adding an interface for the server to send messages to users. The main changes include modifying the MessageService with the addition of “Code 1”. The relevant class is SendMsgComponet, where the “Code 2” segment is involved. Due to a vulnerability, I decided to upgrade Openfire to version 4.7.5. However, after upgrading Openfire and uploading the plugin, it seems not to be working, and the error message is as follows. How can I fix this?
code 1
@POST
@Path("/send")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public String sendMessage(MessageEntityToSomeBody messageEntityToSomeBody) {
Message msg = new Message();
Logger Log = LoggerFactory.getLogger(MessageService.class);
Log.debug("body:" + messageEntityToSomeBody.getBody() + " fromJid:" + messageEntityToSomeBody.getFromJid() + " toJid:" + messageEntityToSomeBody.getToJid());
msg.setBody(messageEntityToSomeBody.getBody());
msg.setFrom(messageEntityToSomeBody.getFromJid());//发信人
msg.setTo(messageEntityToSomeBody.getToJid());//接收人
msg.setType(Message.Type.chat);//为聊天信息
msg.setSubject(messageEntityToSomeBody.getSubject());
if (messageEntityToSomeBody.getMsgBodyType() != null && !messageEntityToSomeBody.getMsgBodyType().isEmpty()) {
msg.addChildElement("msgBodyType","").setText(messageEntityToSomeBody.getMsgBodyType());
}
SendMsgComponet sendMsgComponet = new SendMsgComponet();
sendMsgComponet.SendMsg(msg);
return "";
}
code 2
package org.jivesoftware.openfire.plugin.rest.service;
import org.xmpp.component.Component;
import org.xmpp.component.ComponentException;
import org.xmpp.component.ComponentManager;
import org.xmpp.component.ComponentManagerFactory;
import org.xmpp.packet.JID;
import org.xmpp.packet.Message;
import org.xmpp.packet.Packet;
public class SendMsgComponet implements Component {
private static final String COMPONENTNAME = "sendservlet";//组件名
private ComponentManager componentManager;//组件管理
public SendMsgComponet()
{
componentManager = ComponentManagerFactory.getComponentManager();
try {
componentManager.addComponent(COMPONENTNAME, this);
} catch (Exception err) {
err.printStackTrace();
}
}
///发送消息
public void SendMsg(Message message)
{
try {
componentManager.sendPacket(this, message);//发关
} catch (ComponentException e) {
e.printStackTrace();
}
}
///发送消息
// public void SendMsgNew(MessageSendEntity messageSendEntity)
// {
// try {
// componentManager.sendPacket(this, messageSendEntity);//发关
// } catch (ComponentException e) {
// e.printStackTrace();
// }
// }
@Override
public String getName() {
return COMPONENTNAME;
}
@Override
public String getDescription() {
return null;
}
@Override
public void processPacket(Packet packet) {
}
@Override
public void initialize(JID jid, ComponentManager componentManager) throws ComponentException {
}
@Override
public void start() {
}
@Override
public void shutdown() {
}
}
when I vist openfire console->server->server settings-> REST API ,the exception as this
异常:
java.lang.NullPointerException
at org.jivesoftware.openfire.plugin.restAPI.rest_002dapi_jsp._jspService(rest_002dapi_jsp.java:203)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:462)
at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:122)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1459)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)
at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:254)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:254)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.lang.Thread.run(Thread.java:748)