igniterealtime / openfire-fastpath-plugin Goto Github PK
View Code? Open in Web Editor NEWAdds support for managed queued chat requests, such as a support team might use
Adds support for managed queued chat requests, such as a support team might use
Is there a way for the agent to automatically join the workgroup's queue? And possible to add the feature for future under Workgroup Settings -> Settings -> Workgroup Details?
When a queue is closed, FastPath offers fallback functionality, as configured by the 'offline settings'. Currently supported are:
A new option should be added: join chat room.
This feature does suggest that the public client supports chat rooms. As the existing 'agent chat' under water is also a MUC, this does seem achievable.
When all agents reject (or not answer) a request to chat, a rejection is sent back to the client. The stanza looks like this:
<message xmlns="jabber:client" from="[email protected]" to="[email protected]/23cxyv12z9"><depart-queue xmlns="http://jabber.org/protocol/workgroup"><agent-not-found/></depart-queue></message>
The Converse-based front-end does not seem to pick up this event. It keeps showing a spinner. A user has no way to know that he'll never be answered. The spinner should be replaced.
The FastPath database tables are sometimes used to store snippets of XML. The corresponding columns are currently defined as varchars. I've observed that these can be to small (see exception below). To prevent this, those columns should be modified to be of a clob/text type.
2021.02.28 10:22:21 ERROR [pool-29-thread-1]: org.jivesoftware.xmpp.workgroup.spi.JiveLiveProperties - data exception: string data, right truncation; table: FPWORKGROUPPROP column: PROPVALUE
java.sql.SQLDataException: data exception: string data, right truncation; table: FPWORKGROUPPROP column: PROPVALUE
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) ~[commons-dbcp2-2.6.0.jar:2.6.0]
at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) ~[commons-dbcp2-2.6.0.jar:2.6.0]
at org.jivesoftware.xmpp.workgroup.spi.JiveLiveProperties.insertProperty(JiveLiveProperties.java:126) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.xmpp.workgroup.spi.JiveLiveProperties.setProperty(JiveLiveProperties.java:68) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.openfire.fastpath.dataforms.FormManager.saveDataForm(FormManager.java:175) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.openfire.fastpath.dataforms.FormManager.saveWorkgroupForm(FormManager.java:92) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.openfire.fastpath.dataforms.FormManager.createGenericForm(FormManager.java:262) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.openfire.fastpath.util.WorkgroupUtils.createWorkgroup(WorkgroupUtils.java:293) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.xmpp.workgroup.WorkgroupManager.createDemoWorkgroup(WorkgroupManager.java:957) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.xmpp.workgroup.WorkgroupManager.start(WorkgroupManager.java:225) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.openfire.component.InternalComponentManager.addComponent(InternalComponentManager.java:192) [xmppserver-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
at org.jivesoftware.openfire.fastpath.FastpathPlugin.workgroupManagerStart(FastpathPlugin.java:110) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.openfire.fastpath.FastpathPlugin.initializePlugin(FastpathPlugin.java:88) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java:683) [xmppserver-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:375) [xmppserver-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:363) [xmppserver-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_282]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_282]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_282]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_282]
Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation; table: FPWORKGROUPPROP column: PROPVALUE
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Table.enforceTypeLimits(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Table.generateAndCheckData(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Table.insertSingleRow(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.StatementDML.insertSingleRow(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.StatementInsert.getResult(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
... 22 more
Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.types.CharacterType.convertToTypeLimits(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Table.enforceTypeLimits(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Table.generateAndCheckData(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Table.insertSingleRow(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.StatementDML.insertSingleRow(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.StatementInsert.getResult(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
... 22 more
Currently readme has a broken link to Jiveon instance. Old pdfs are probably too old, but still can be reached. Maybe should put them into a Discourse post and fix the link.
When an Agent rejects a request offer, by sending 'no' to the chat bot, the chat bot currently responds with:
Please stand by for group chat invitation
That's obviously incorrect.
As of now: Version 7.0.4
Thanks!
When joining a workgroup as a customer, XEP-0142 allows for unspecified metadata to be sent. The Converse client does not do this.
Spark depends on a username
property to be set (or it will NullPointer). This really is a problem to be fixed in Spark, but to retain compatibility with older versions (up to the current version) of Spark, the Converse client should be modified to add this metadata field.
...Migrated from Ignite Jira OF-1166...
When installing Fastpath Service plugin on a fresh installation of Openfire 4.0.2 it says that install was successful, but menu doesn't appear and this is logged in the error.log:
In order to a user agent to add chatbot to their roster, presence subscription is required both ways
Source release was done, but no actual release is out to use on plugins list.
Good Day
Could anyone explain how they use FastPath on their own websites to get clients to connect to FastPath as it was done years ago?
Thank You
Albertus Geyser
When a visitor arrives on the site, agents are asked if they can take it. Answering "yes" works but the messages asks agent to pick !accept or !reject, which does not work.
The Round Robin dispatcher dispatches an offer to the first available agent, waits for it to respond, then goes on to the next one.
An alternative approach should be added, one in which an offer goes out to all available agents, where the first one to respond would 'win'.
RequestQueues, much like Agents and Dispatchers, can have properties that are stored in dedicated database tables.
For all but RequestQueue, the corresponding database table has the prefix of 'fp' (for FastPath, presumably). The request queue database table uses the prefix 'jla' (Jive Live Assistant?) in code. The database installation script, however, also uses 'fp'.
I'm assuming that there was, at one point, a rename in which this was missed.
...Migrated from Ignire Jira OF-683...
When a user starts a chat with a Fastpath workgroup JID and fills an automated form (support request), an agent assigned to that group and logged into Spark's Fastpath plugin should get a popup with Accept, Forward buttons and a progress bar until the automatic request forwarding to a next available agent. Currently Saprk shows blank popup and this happens with old Spark version, so the issue must be in Openfire or Openfire's Fasthpath plugin side.
Openfire logs such error upon getting filled form:
[org.jivesoftware.openfire.component.InternalComponentManager$2.error(InternalCo mponentManager.java:338)
]
com.thoughtworks.xstream.converters.ConversionException: Cannot construct org.xmpp.forms.DataForm as it does not have a no-args constructor
---- Debugging information ----
Spark is loggin this error:
org.jivesoftware.spark.util.log.Log error
SEVERE: Unable to retrieve Workgroup form.
item-not-found(404)
at org.jivesoftware.smackx.workgroup.user.Workgroup.getWorkgroupForm(Workgroup.jav a:850)
at org.jivesoftware.fastpath.workspace.panes.ChatQueue.offerRecieved(ChatQueue.jav a:107)
at org.jivesoftware.fastpath.workspace.Workpane$ChatOfferListener.handleOffer(Work pane.java:567)
at org.jivesoftware.fastpath.workspace.Workpane$ChatOfferListener.access$600(Workp ane.java:547)
at org.jivesoftware.fastpath.workspace.Workpane$ChatOfferListener$1.run(Workpane.j ava:554)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
</details>
User reports that replacing xstream.jar solved this, so the problem is with that library https://discourse.igniterealtime.org/t/fastpath-nullpointerexception/54075
When a agent and end-user join a chatroom, that chatroom is created by an XMPP end-user that represents the workgroup queue (eg: "demo" in a default setup). This entity is shown as a participant in the chat room (twice, actually), which is confusing to end-users. This participant should not be displayed.
`157057 java.lang.NullPointerException: null
157058 2021.11.23 17:30:49 org.jivesoftware.xmpp.workgroup.RequestQueue - An exception occurred while trying to send status to recipient: 23@domain/annt58br30
157059 java.util.NoSuchElementException: null
157060 at java.util.LinkedList.getFirst(LinkedList.java:244) ~[?:1.8.0_144]
157061 at org.jivesoftware.xmpp.workgroup.RequestQueue.getFirst(RequestQueue.java:311) ~[fastpath-4.5.0-SNAPSHOT.jar!/:?]
157062 at org.jivesoftware.xmpp.workgroup.RequestQueue.getStatusPresence(RequestQueue.java:352) ~[fastpath-4.5.0-SNAPSHOT.jar!/:?]
157063 at org.jivesoftware.xmpp.workgroup.RequestQueue.sendStatus(RequestQueue.java:320) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157064 at org.jivesoftware.xmpp.workgroup.AgentSession.join(AgentSession.java:146) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157065 at org.jivesoftware.xmpp.workgroup.WorkgroupPresence.agentToWorkgroup(WorkgroupPresence.java:345) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157066 at org.jivesoftware.xmpp.workgroup.WorkgroupPresence.process(WorkgroupPresence.java:160) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157067 at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:453) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157068 at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:477) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157069 at org.jivesoftware.xmpp.workgroup.WorkgroupManager.processPacket(WorkgroupManager.java:684) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157070 at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents.process(InternalComponentManager.java:859) [xmppserver-4.6.4.jar:4.6.4]
157071 at org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(RoutingTableImpl.java:451) [xmppserver-4.6.4.jar:4.6.4]
157072 at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.java:266) [xmppserver-4.6.4.jar:4.6.4]
157073 at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:165) [xmppserver-4.6.4.jar:4.6.4]
157074 at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:79) [xmppserver-4.6.4.jar:4.6.4]
157075 at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:84) [xmppserver-4.6.4.jar:4.6.4]
157076 at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:118) [xmppserver-4.6.4.jar:4.6.4]
157077 at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:69) [xmppserver-4.6.4.jar:4.6.4]
157078 at org.jivesoftware.openfire.http.HttpSession.sendPendingPackets(HttpSession.java:612) [xmppserver-4.6.4.jar:4.6.4]
157079 at org.jivesoftware.openfire.http.HttpSession$HttpPacketSender.run(HttpSession.java:1329) [xmppserver-4.6.4.jar:4.6.4]
157080 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
157081 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
157082 at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
157083 2021.11.23 17:30:49 org.jivesoftware.xmpp.workgroup.RequestQueue - An exception occurred while trying to send detailed status to recipient: 23@domain/annt58br30
157084 java.lang.NullPointerException: null
157085 at org.jivesoftware.xmpp.workgroup.RequestQueue.getDetailedStatusPresence(RequestQueue.java:417) ~[fastpath-4.5.0-SNAPSHOT.jar!/:?]
157086 at org.jivesoftware.xmpp.workgroup.RequestQueue.sendDetailedStatus(RequestQueue.java:332) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157087 at org.jivesoftware.xmpp.workgroup.AgentSession.join(AgentSession.java:147) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157088 at org.jivesoftware.xmpp.workgroup.WorkgroupPresence.agentToWorkgroup(WorkgroupPresence.java:345) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157089 at org.jivesoftware.xmpp.workgroup.WorkgroupPresence.process(WorkgroupPresence.java:160) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157090 at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:453) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157091 at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:477) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157092 at org.jivesoftware.xmpp.workgroup.WorkgroupManager.processPacket(WorkgroupManager.java:684) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157093 at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents.process(InternalComponentManager.java:859) [xmppserver-4.6.4.jar:4.6.4]
157094 at org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(RoutingTableImpl.java:451) [xmppserver-4.6.4.jar:4.6.4]
157095 at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.java:266) [xmppserver-4.6.4.jar:4.6.4]
157096 at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:165) [xmppserver-4.6.4.jar:4.6.4]
157097 at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:79) [xmppserver-4.6.4.jar:4.6.4]
157098 at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:84) [xmppserver-4.6.4.jar:4.6.4]
157099 at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:118) [xmppserver-4.6.4.jar:4.6.4]
157100 at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:69) [xmppserver-4.6.4.jar:4.6.4]
157101 at org.jivesoftware.openfire.http.HttpSession.sendPendingPackets(HttpSession.java:612) [xmppserver-4.6.4.jar:4.6.4]
157102 at org.jivesoftware.openfire.http.HttpSession$HttpPacketSender.run(HttpSession.java:1329) [xmppserver-4.6.4.jar:4.6.4]
157103 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
157104 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
157105 at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
`
...Migrated from Ignite Jira OF-1315...
n a recent Openfire snapshot in github, I've found a suspicous code in src/plugins/fastpath/src/java/org/jivesoftware/xmpp/workgroup/Agent.java
241 public void setAgentJID(JID agentJID) {
242 // Do nothing if setting the same old value
243 if (agentJID != null && agentJID.equals(agentJID)) {
244 return;
245 }
246 // Set the new value
247 this.agentJID = agentJID;
248 // Save the new Agent's state to the database
249 saveAgent();
250 }
In Line 243, should "agentJID.equals(agentJID)" be "this.agentJID.equals(agentJID)"?
The muc#roomconfig_presencebroadcast
takes a list of roles. FastPath currently adds moderators
, which is an invalid role. moderator
(singular) is valid.
The confusion possibly stems from the value for the muc#roomconfig_persistentroom
option, where the plural is valid.
...Migrated from Ignite Jira OF-816...
On the 3.9.3 server, I had a user use Spark and open a chat to a FastPath workgroup. FastPath is not passing the session off to a member of the workgroup.
On the 3.8.2 server, it behaves properly. The chat request is passed off to an agent to accept and the chat is established. All good.
The problem is certainly an issue in the integration between FastPath and OpenFire. The latest FastPath works with OpenFire 3.8.2, so I'm guessing something on OpenFire 3.9.x
It seems that FastPath is unable to handle having more than one group chat service defined.
In addition to the default "conference" service that is default, I had several other group conference services defined. Deleting all conference services but the default and all workgroups, then restarting the server, and creating the new FastPath workgroups seems to have solved this issue.
We are only seeing the same problem after updating from 3.9.1 to 3.9.3. So it was generally working with 3.9.1 for us. We are also only using the default conference service, without multiple services defined. After downgrading to 3.9.1 it is working again.
When fastpath webchat is hosted on a different server, browser displays CORS errors like this
Access to font at 'https://openfire_server:7443/webchat/widget/webfonts/muli.ttf' from origin 'https://igniterealtime.github.io' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
When a workgroup queue is not open (eg: no logged in agents), then the Converse UI should not show a functional chat button (the button that's used to start a new chat).
That button should either be removed, or be disabled somehow.
Note that ideally, the state of the button is dynamically adjusted, to ensure that, when the queue state changes, the button on the page (that has already been loaded) also does.
To build plugins for Openfire 4.3.0 pom.xml should include repositories tags pointing to Archiva. If plugin has pages in Admin Console, web.xml should also be added.
For references:
igniterealtime/openfire-clientControl-plugin#11
If the user agent has a chatbot session active, then send the offer-revoked message via the chatbot
This repository shows security alert because of Lucene.
In order to support other XMPP clients (other than Spark and Pade) like Conversations or Pade Mi (mobile client), extend the Fastpath Chatbot to support a conversation with an agent as follows
+-------+
| Start |<---------+
+-------+ |
| |
| Offer |
v |
+---------------+ |
| Offer Pending | |
+---------------+ |
| | | Revoke |
| | +-------->|
| | Reject |
Accept | +----------->|
v |
+--------------+ |
| Chat Pending | |
+--------------+ |
| | Revoke |
Invite | +-----------+
V
+-----------+
| Chat room |
+-----------+
Agents will add the workgroup chatbot as a contact and start a conversation anytime. The agent will can start to receive offers to chat with users immediately from the Chatbot. Chat offers will be made to the agent and the agent has the opportunity to accept or reject each offer. Fastpath may also revoke an offer. For example, Fastpath may revoke chat offers if the offer is not responded to within a certain period of time to ensure fast responses to user chat requests.
The client used by the user (as opposed to 'agent') can send optional metadata in a form. The plugin currently throws a nullpointerexception when this optional data is not provided.
FastPath ships with one Dispatcher implementation: RoundRobin. Most of the implementation allows for others to be used though. That work should be finished.
Various issues have been reported in the version of the xstream library that is currently being used (CVE-2017-7957, CVE-2016-3674, CVE-2013-7285). Update the library to a later release to resolve these issues.
The TaskEngine is used as a singleton, but it's made null
when the plugin is disposed.
Subsequent invocations to the getter will yield null results, which cause nullpointers.
Perhaps the reasoning here is that when the plugin gets unloaded, the entire class loader gets removed, which resets this behavior? I'm not sure if this is true though.
By allowing for a new instance of TaskEngine to be instantiated, we might prevent issues - or indeed raise new ones, if the TaskEngine is supposed to be reset only with a proper recycling of PluginClassLoader instances.
There are quite good set of customized text settings available at workgroup-text-settings.jsp, but none of them are displayed to end user.
End user is still getting option to join group chat. No other information is displayed.
All these settings are important to make fastpath plugin, close to standard web chat support systems.
2021.09.30 14:56:59 org.jivesoftware.openfire.fastpath.dataforms.FormManager - org.jivesoftware.openfire.fastpath.dataforms.WorkgroupForm com.thoughtworks.xstream.security.ForbiddenClassException: org.jivesoftware.openfire.fastpath.dataforms.WorkgroupForm at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[?:?] at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74) ~[?:?] at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?] at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[?:?] at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[?:?] at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133) ~[?:?] at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1391) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1376) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1261) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1252) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.loadWebForms(FormManager.java:214) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.<init>(FormManager.java:57) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.<clinit>(FormManager.java:40) ~[?:?] at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:133) ~[?:?] at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[apache-jsp-8.5.54.jar:8.5.54] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:439) ~[xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:129) ~[xmppserver-4.6.4.jar:4.6.4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1452) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) ~[sitemesh-2.4.2.jar:?] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) ~[sitemesh-2.4.2.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 2021.09.30 14:56:59 org.jivesoftware.openfire.fastpath.dataforms.FormManager - org.xmpp.forms.DataForm com.thoughtworks.xstream.security.ForbiddenClassException: org.xmpp.forms.DataForm at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[?:?] at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74) ~[?:?] at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?] at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[?:?] at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[?:?] at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133) ~[?:?] at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1391) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1376) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1261) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1252) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.getDataForm(FormManager.java:193) ~[?:?] at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:134) ~[?:?] at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[apache-jsp-8.5.54.jar:8.5.54] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:439) ~[xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:129) ~[xmppserver-4.6.4.jar:4.6.4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1452) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) ~[sitemesh-2.4.2.jar:?] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) ~[sitemesh-2.4.2.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 2021.09.30 15:08:28 org.jivesoftware.openfire.fastpath.dataforms.FormManager - org.jivesoftware.openfire.fastpath.dataforms.WorkgroupForm com.thoughtworks.xstream.security.ForbiddenClassException: org.jivesoftware.openfire.fastpath.dataforms.WorkgroupForm at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[?:?] at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74) ~[?:?] at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?] at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[?:?] at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[?:?] at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133) ~[?:?] at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1391) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1376) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1261) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1252) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.loadWebForms(FormManager.java:214) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.<init>(FormManager.java:57) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.<clinit>(FormManager.java:40) ~[?:?] at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:133) ~[?:?] at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[apache-jsp-8.5.54.jar:8.5.54] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:439) ~[xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:129) ~[xmppserver-4.6.4.jar:4.6.4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1452) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) ~[sitemesh-2.4.2.jar:?] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) ~[sitemesh-2.4.2.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 2021.09.30 15:08:28 org.jivesoftware.openfire.fastpath.dataforms.FormManager - org.xmpp.forms.DataForm com.thoughtworks.xstream.security.ForbiddenClassException: org.xmpp.forms.DataForm at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[?:?] at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74) ~[?:?] at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?] at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[?:?] at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[?:?] at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133) ~[?:?] at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1391) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1376) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1261) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1252) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.getDataForm(FormManager.java:193) ~[?:?] at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:134) ~[?:?] at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[apache-jsp-8.5.54.jar:8.5.54] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:439) ~[xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:129) ~[xmppserver-4.6.4.jar:4.6.4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1452) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) ~[sitemesh-2.4.2.jar:?] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) ~[sitemesh-2.4.2.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]
Testing done using Pade extension.
There is quite long wait time if agent do not approve chat.
1- Once user has clicked start chat icon, it displays loading message, agent gets notification "undefined is waiting for undefined seconds"
2- Agent clicks notification, pade opens but still it take around 15 - 30 seconds for agent to get new chat request alert.
3- Once agent joins new chat request then user gets an option to choose his username and enter group chat,
Tested multiple times, total wait is around 60-90 seconds.
Offline Settings for workgroup when all agents are offline are not being displayed to user. Web user can still join groupchat room.
Have tested by make all agents offline and also have closed group, but still user can join room.
After installing the plugin version 4.4.4 and clicking on the Fastpath menu button to get into its settings a blank page is shown. The browser network tab shows HTTP code 404, while getting plugins/fastpath/workgroup-summary.jsp. What could be the problem?
The plugin version 4.4.3 shows settings, but throws an exception while clicking on workgroup edit button.
In 4.3.2 when i press on a workgroup name it shows exception:
`Exception:
java.lang.NullPointerException
at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:493)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:395)
at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)
at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:216)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
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.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:216)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:503)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:411)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:305)
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)
`
FastPath can provide a chatbot, that can be configured. There's source code for an admin console page that allows for this, but this page does not seem to be exposed.
If there's not a specific reason to not expose that page... let's expose it?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.