[AMQ-9239] jakarta.jms - activemq-web-console, activemq-web-demo, activemq-web changes

This commit is contained in:
Matt Pavlovich 2023-04-13 09:21:41 -05:00
parent 65267a9a15
commit 90fbd9098b
63 changed files with 285 additions and 251 deletions

View File

@ -143,12 +143,12 @@
javax.management.remote, javax.management.remote,
javax.naming, javax.naming,
org.w3c.dom, org.w3c.dom,
javax.servlet;version="[2.5,4)", jakarta.servlet;version="[5,6)",
javax.servlet.annotation;version="[2.5,4)", jakarta.servlet.annotation;version="[5,6)",
javax.servlet.http;version="[2.5,4)", jakarta.servlet.http;version="[5,6)",
javax.servlet.jsp, jakarta.servlet.jsp,
javax.servlet.jsp.tagext, jakarta.servlet.jsp.tagext,
javax.servlet.jsp.el, jakarta.servlet.jsp.el,
javax.management, javax.management,
javax.management.openmbean, javax.management.openmbean,
javax.net, javax.net,
@ -173,14 +173,14 @@
</build> </build>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.apache.tomcat</groupId> <groupId>jakarta.servlet</groupId>
<artifactId>tomcat-servlet-api</artifactId> <artifactId>jakarta.servlet-api</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.tomcat</groupId> <groupId>jakarta.websocket</groupId>
<artifactId>tomcat-websocket-api</artifactId> <artifactId>jakarta.websocket-api</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
@ -190,8 +190,8 @@
<artifactId>jakarta.jms-api</artifactId> <artifactId>jakarta.jms-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.geronimo.specs</groupId> <groupId>jakarta.transaction</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId> <artifactId>jakarta.transaction-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.geronimo.specs</groupId> <groupId>org.apache.geronimo.specs</groupId>
@ -238,6 +238,16 @@
<artifactId>xbean-spring</artifactId> <artifactId>xbean-spring</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<!-- web container --> <!-- web container -->
<dependency> <dependency>
<groupId>org.eclipse.jetty</groupId> <groupId>org.eclipse.jetty</groupId>
@ -268,10 +278,24 @@
<dependency> <dependency>
<groupId>org.eclipse.jetty</groupId> <groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jstl</artifactId> <artifactId>apache-jstl</artifactId>
<version>11.0.0</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Tag Libs --> <!-- Tag Libs -->
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!--
<dependency> <dependency>
<groupId>org.apache.taglibs</groupId> <groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-spec</artifactId> <artifactId>taglibs-standard-spec</artifactId>
@ -282,6 +306,7 @@
<artifactId>taglibs-standard-impl</artifactId> <artifactId>taglibs-standard-impl</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
-->
<!-- used for testing --> <!-- used for testing -->
<dependency> <dependency>
@ -315,16 +340,16 @@
</exclusions> </exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.geronimo.specs</groupId> <groupId>jakarta.annotation</groupId>
<artifactId>geronimo-annotation_1.3_spec</artifactId> <artifactId>jakarta.annotation-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.ow2.asm</groupId> <groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId> <artifactId>asm</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.osgi</groupId> <groupId>org.osgi</groupId>
<artifactId>osgi.core</artifactId> <artifactId>osgi.core</artifactId>

View File

@ -23,10 +23,10 @@ import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils; import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.web.context.support.XmlWebApplicationContext; import org.springframework.web.context.support.XmlWebApplicationContext;
import javax.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import javax.servlet.ServletContext; import jakarta.servlet.ServletContext;
import javax.servlet.ServletContextEvent; import jakarta.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import jakarta.servlet.ServletContextListener;
/** /**
* Starts the WebConsole. * Starts the WebConsole.
@ -68,6 +68,8 @@ public class WebConsoleStarter implements ServletContextListener {
context.setConfigLocations(new String[] { context.setConfigLocations(new String[] {
configuration configuration
}); });
// [AMQ-9239] TODO: Confirm jakarta ServeletContext API usage change
context.refresh(); context.refresh();
context.start(); context.start();
@ -86,7 +88,7 @@ public class WebConsoleStarter implements ServletContextListener {
XmlWebApplicationContext context = (XmlWebApplicationContext)WebApplicationContextUtils.getWebApplicationContext(event.getServletContext()); XmlWebApplicationContext context = (XmlWebApplicationContext)WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());
if (context != null) { if (context != null) {
context.stop(); context.stop();
context.destroy(); context.close();
} }
// do nothing, since the context is destroyed anyway // do nothing, since the context is destroyed anyway
} }

View File

@ -23,7 +23,7 @@ import org.osgi.framework.ServiceRegistration;
import org.osgi.service.cm.ConfigurationException; import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.cm.ManagedService; import org.osgi.service.cm.ManagedService;
import javax.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import javax.management.remote.JMXServiceURL; import javax.management.remote.JMXServiceURL;
import java.util.Collection; import java.util.Collection;
import java.util.Dictionary; import java.util.Dictionary;

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web.controller; package org.apache.activemq.web.controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.broker.jmx.QueueViewMBean; import org.apache.activemq.broker.jmx.QueueViewMBean;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web.controller; package org.apache.activemq.web.controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;
import org.apache.activemq.web.DestinationFacade; import org.apache.activemq.web.DestinationFacade;

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web.controller; package org.apache.activemq.web.controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;
import org.apache.activemq.web.DurableSubscriberFacade; import org.apache.activemq.web.DurableSubscriberFacade;

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web.controller; package org.apache.activemq.web.controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;
import org.apache.activemq.web.DestinationFacade; import org.apache.activemq.web.DestinationFacade;

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web.controller; package org.apache.activemq.web.controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.broker.jmx.JobSchedulerViewMBean; import org.apache.activemq.broker.jmx.JobSchedulerViewMBean;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;
import org.apache.activemq.web.DestinationFacade; import org.apache.activemq.web.DestinationFacade;

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web.controller; package org.apache.activemq.web.controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.broker.jmx.QueueViewMBean; import org.apache.activemq.broker.jmx.QueueViewMBean;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web.controller; package org.apache.activemq.web.controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;
import org.apache.activemq.web.DurableSubscriberFacade; import org.apache.activemq.web.DurableSubscriberFacade;

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web.controller; package org.apache.activemq.web.controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.broker.jmx.QueueViewMBean; import org.apache.activemq.broker.jmx.QueueViewMBean;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;

View File

@ -21,8 +21,8 @@ import org.apache.activemq.web.DestinationFacade;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
/** /**
* *

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web.controller; package org.apache.activemq.web.controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;
import org.apache.activemq.web.DestinationFacade; import org.apache.activemq.web.DestinationFacade;

View File

@ -21,8 +21,8 @@ import org.apache.activemq.web.DestinationFacade;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
/** /**
* *

View File

@ -24,8 +24,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
/** /**
* Retry a message on a queue. * Retry a message on a queue.

View File

@ -18,10 +18,10 @@ package org.apache.activemq.web.controller;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map; import java.util.Map;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Message; import jakarta.jms.Message;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;
import org.apache.activemq.web.DestinationFacade; import org.apache.activemq.web.DestinationFacade;

View File

@ -22,15 +22,15 @@ import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.servlet.Filter; import jakarta.servlet.Filter;
import javax.servlet.FilterChain; import jakarta.servlet.FilterChain;
import javax.servlet.FilterConfig; import jakarta.servlet.FilterConfig;
import javax.servlet.ServletContext; import jakarta.servlet.ServletContext;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.ServletRequest; import jakarta.servlet.ServletRequest;
import javax.servlet.ServletResponse; import jakarta.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.web.BrokerFacade; import org.apache.activemq.web.BrokerFacade;
import org.slf4j.Logger; import org.slf4j.Logger;

View File

@ -18,7 +18,7 @@ package org.apache.activemq.web.handler;
import java.util.Arrays; import java.util.Arrays;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.apache.activemq.web.DestinationFacade; import org.apache.activemq.web.DestinationFacade;
import org.slf4j.Logger; import org.slf4j.Logger;

View File

@ -16,5 +16,5 @@
--%> --%>
<%@ taglib prefix="form" tagdir="/WEB-INF/tags/form" %> <%@ taglib prefix="form" tagdir="/WEB-INF/tags/form" %>
<%@ taglib prefix="jms" tagdir="/WEB-INF/tags/jms" %> <%@ taglib prefix="jms" tagdir="/WEB-INF/tags/jms" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="c" uri="jakarta.tags.core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix="fn" uri="jakarta.tags.functions"%>

View File

@ -15,9 +15,9 @@
limitations under the License. limitations under the License.
--%> --%>
<%@ attribute name="var" type="java.lang.String" required="true" %> <%@ attribute name="var" type="java.lang.String" required="true" %>
<%@ attribute name="queueBrowser" type="javax.jms.QueueBrowser" required="true" %> <%@ attribute name="queueBrowser" type="jakarta.jms.QueueBrowser" required="true" %>
<%@ tag import="java.util.Enumeration" %> <%@ tag import="java.util.Enumeration" %>
<%@ tag import="javax.jms.Message" %> <%@ tag import="jakarta.jms.Message" %>
<% <%
Enumeration iter = queueBrowser.getEnumeration(); Enumeration iter = queueBrowser.getEnumeration();

View File

@ -14,10 +14,10 @@
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--%> --%>
<%@ attribute name="message" type="javax.jms.Message" required="true" %> <%@ attribute name="message" type="jakarta.jms.Message" required="true" %>
<% <%
if (message != null) { if (message != null) {
if (message.getJMSDeliveryMode() == javax.jms.DeliveryMode.PERSISTENT) { if (message.getJMSDeliveryMode() == jakarta.jms.DeliveryMode.PERSISTENT) {
out.println("Persistent"); out.println("Persistent");
} }
else { else {

View File

@ -16,10 +16,11 @@
limitations under the License. limitations under the License.
--> -->
<web-app xmlns="http://java.sun.com/xml/ns/javaee" <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
version="3.0"> web-app_5_0.xsd"
version="5.0">
<description> <description>
Apache ActiveMQ Web Console Apache ActiveMQ Web Console
@ -111,7 +112,7 @@
<!-- JNDI Stuff <!-- JNDI Stuff
<resource-ref> <resource-ref>
<res-ref-name>jms/connectionFactory</res-ref-name> <res-ref-name>jms/connectionFactory</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type> <res-type>jakarta.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth> <res-auth>Container</res-auth>
</resource-ref> </resource-ref>
<resource-ref> <resource-ref>

View File

@ -111,12 +111,12 @@
javax.management.remote, javax.management.remote,
javax.naming, javax.naming,
org.w3c.dom, org.w3c.dom,
javax.servlet, jakarta.servlet,
javax.servlet.http, jakarta.servlet.http,
javax.servlet.resources, jakarta.servlet.resources,
javax.servlet.jsp, jakarta.servlet.jsp,
javax.servlet.jsp.tagext, jakarta.servlet.jsp.tagext,
javax.servlet.jsp.el, jakarta.servlet.jsp.el,
javax.management, javax.management,
javax.management.openmbean, javax.management.openmbean,
javax.net, javax.net,
@ -146,8 +146,8 @@
<artifactId>jakarta.jms-api</artifactId> <artifactId>jakarta.jms-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.geronimo.specs</groupId> <groupId>jakarta.transaction</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId> <artifactId>jakarta.transaction-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.geronimo.specs</groupId> <groupId>org.apache.geronimo.specs</groupId>
@ -188,6 +188,11 @@
<artifactId>jetty-server</artifactId> <artifactId>jetty-server</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<scope>test</scope>
</dependency>
<!-- for custom XML parsing --> <!-- for custom XML parsing -->
<dependency> <dependency>

View File

@ -61,7 +61,7 @@ This product includes software developed by the Sun Microsystems, Inc.
This product includes some software developed at The Apache Software This product includes some software developed at The Apache Software
Foundation (http://www.apache.org/). Foundation (http://www.apache.org/).
The javax.servlet package used by Jetty is copyright The jakarta.servlet package used by Jetty is copyright
Sun Microsystems, Inc and Apache Software Foundation. It is Sun Microsystems, Inc and Apache Software Foundation. It is
distributed under the Common Development and Distribution License. distributed under the Common Development and Distribution License.
You can obtain a copy of the license at You can obtain a copy of the license at

View File

@ -15,10 +15,11 @@
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<web-app xmlns="http://java.sun.com/xml/ns/javaee" <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
version="3.0"> web-app_5_0.xsd"
version="5.0">
<display-name>Apache ActiveMQ Web Demo</display-name> <display-name>Apache ActiveMQ Web Demo</display-name>

View File

@ -26,8 +26,8 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.MessageProducer; import jakarta.jms.MessageProducer;
import org.apache.activemq.transport.stomp.Stomp; import org.apache.activemq.transport.stomp.Stomp;
import org.apache.activemq.transport.stomp.StompConnection; import org.apache.activemq.transport.stomp.StompConnection;

View File

@ -24,9 +24,9 @@ import java.net.Socket;
import java.net.URI; import java.net.URI;
import java.net.URL; import java.net.URL;
import javax.jms.Connection; import jakarta.jms.Connection;
import javax.jms.MessageProducer; import jakarta.jms.MessageProducer;
import javax.jms.Session; import jakarta.jms.Session;
import javax.net.ServerSocketFactory; import javax.net.ServerSocketFactory;
import javax.net.SocketFactory; import javax.net.SocketFactory;

View File

@ -24,7 +24,7 @@ import java.util.Set;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import javax.jms.TextMessage; import jakarta.jms.TextMessage;
import javax.management.ObjectName; import javax.management.ObjectName;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
@ -268,7 +268,8 @@ public class RestTest extends JettyTestSupport {
final CountDownLatch latch2 = new CountDownLatch(1); final CountDownLatch latch2 = new CountDownLatch(1);
final StringBuffer buf2 = new StringBuffer(); final StringBuffer buf2 = new StringBuffer();
final AtomicInteger status2 = new AtomicInteger(); final AtomicInteger status2 = new AtomicInteger();
final HttpFields responseFields = new HttpFields();
final HttpFields.Mutable responseFields = HttpFields.build();
httpClient.newRequest("http://localhost:" + port + "/message/testPost?readTimeout=1000&type=Queue") httpClient.newRequest("http://localhost:" + port + "/message/testPost?readTimeout=1000&type=Queue")
.method(HttpMethod.GET).send(new BufferingResponseListener() { .method(HttpMethod.GET).send(new BufferingResponseListener() {
@Override @Override
@ -285,7 +286,7 @@ public class RestTest extends JettyTestSupport {
HttpFields fields = responseFields; HttpFields fields = responseFields;
assertNotNull("Headers Exist", fields); assertNotNull("Headers Exist", fields);
assertEquals("header value", "value", fields.getStringField("property")); assertEquals("header value", "value", fields.getField("property").getValue());
} }

View File

@ -76,11 +76,11 @@
</dependency> </dependency>
<!-- web container --> <!-- web container -->
<dependency> <dependency>
<groupId>org.apache.tomcat</groupId> <groupId>jakarta.servlet</groupId>
<artifactId>tomcat-servlet-api</artifactId> <artifactId>jakarta.servlet-api</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.eclipse.jetty</groupId> <groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId> <artifactId>jetty-server</artifactId>
@ -92,7 +92,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.eclipse.jetty.websocket</groupId> <groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-server</artifactId> <artifactId>websocket-jetty-server</artifactId>
</dependency> </dependency>
<!-- Rome RSS Reader --> <!-- Rome RSS Reader -->

View File

@ -17,8 +17,10 @@
package org.apache.activemq.web; package org.apache.activemq.web;
import java.util.LinkedList; import java.util.LinkedList;
import javax.jms.Message;
import javax.jms.MessageConsumer; import jakarta.jms.Message;
import jakarta.jms.MessageConsumer;
import org.apache.activemq.MessageAvailableListener; import org.apache.activemq.MessageAvailableListener;
import org.apache.activemq.web.async.AsyncServletRequest; import org.apache.activemq.web.async.AsyncServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;

View File

@ -21,9 +21,9 @@ import java.net.URL;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/** /**

View File

@ -20,8 +20,8 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Date; import java.util.Date;
import javax.jms.MessageConsumer; import jakarta.jms.MessageConsumer;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -21,8 +21,8 @@ import org.apache.activemq.broker.util.AuditLogService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.servlet.*; import jakarta.servlet.*;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
public class AuditFilter implements Filter { public class AuditFilter implements Filter {

View File

@ -16,7 +16,7 @@
*/ */
package org.apache.activemq.web; package org.apache.activemq.web;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.apache.activemq.broker.jmx.BrokerViewMBean; import org.apache.activemq.broker.jmx.BrokerViewMBean;
import org.apache.activemq.broker.jmx.QueueViewMBean; import org.apache.activemq.broker.jmx.QueueViewMBean;

View File

@ -26,17 +26,19 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import javax.jms.Destination;
import javax.jms.JMSException; import jakarta.jms.Destination;
import javax.jms.Message; import jakarta.jms.JMSException;
import javax.jms.MessageConsumer; import jakarta.jms.Message;
import javax.jms.ObjectMessage; import jakarta.jms.MessageConsumer;
import javax.jms.TextMessage; import jakarta.jms.ObjectMessage;
import javax.servlet.ServletConfig; import jakarta.jms.TextMessage;
import javax.servlet.ServletException; import jakarta.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.apache.activemq.MessageAvailableConsumer; import org.apache.activemq.MessageAvailableConsumer;
import org.apache.activemq.web.async.AsyncServletRequest; import org.apache.activemq.web.async.AsyncServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;

View File

@ -16,14 +16,14 @@
*/ */
package org.apache.activemq.web; package org.apache.activemq.web;
import javax.jms.BytesMessage; import jakarta.jms.BytesMessage;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.MapMessage; import jakarta.jms.MapMessage;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.ObjectMessage; import jakarta.jms.ObjectMessage;
import javax.jms.QueueBrowser; import jakarta.jms.QueueBrowser;
import javax.jms.StreamMessage; import jakarta.jms.StreamMessage;
import javax.jms.TextMessage; import jakarta.jms.TextMessage;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@ -17,22 +17,17 @@
package org.apache.activemq.web; package org.apache.activemq.web;
import jakarta.jms.*;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.ObjectMessage;
import javax.jms.TextMessage;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.activemq.MessageAvailableConsumer; import org.apache.activemq.MessageAvailableConsumer;
import org.apache.activemq.MessageAvailableListener; import org.apache.activemq.MessageAvailableListener;
import org.apache.activemq.web.async.AsyncServletRequest; import org.apache.activemq.web.async.AsyncServletRequest;

View File

@ -24,13 +24,13 @@ import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map; import java.util.Map;
import javax.jms.Destination; import jakarta.jms.Destination;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.TextMessage; import jakarta.jms.TextMessage;
import javax.servlet.ServletConfig; import jakarta.servlet.ServletConfig;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.command.ActiveMQQueue;

View File

@ -16,7 +16,7 @@
*/ */
package org.apache.activemq.web; package org.apache.activemq.web;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
/** /**
* Exception thrown if there was no destination available * Exception thrown if there was no destination available

View File

@ -16,7 +16,7 @@
*/ */
package org.apache.activemq.web; package org.apache.activemq.web;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
/** /**
* *

View File

@ -21,13 +21,13 @@ import java.io.PrintWriter;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Map; import java.util.Map;
import javax.jms.Destination; import jakarta.jms.Destination;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.Session; import jakarta.jms.Session;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
/** /**
* A servlet which will publish dummy market data prices * A servlet which will publish dummy market data prices

View File

@ -20,10 +20,10 @@ import org.springframework.beans.factory.DisposableBean;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Queue; import jakarta.jms.Queue;
import javax.jms.QueueBrowser; import jakarta.jms.QueueBrowser;
import javax.jms.Session; import jakarta.jms.Session;
/** /**
* *

View File

@ -22,15 +22,15 @@ import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.Queue; import jakarta.jms.Queue;
import javax.jms.QueueBrowser; import jakarta.jms.QueueBrowser;
import javax.jms.Session; import jakarta.jms.Session;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.activemq.util.FactoryFinder; import org.apache.activemq.util.FactoryFinder;
import org.apache.activemq.util.IntrospectionSupport; import org.apache.activemq.util.IntrospectionSupport;

View File

@ -18,7 +18,7 @@ package org.apache.activemq.web;
import java.util.Collection; import java.util.Collection;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import org.apache.activemq.broker.jmx.SubscriptionViewMBean; import org.apache.activemq.broker.jmx.SubscriptionViewMBean;

View File

@ -18,7 +18,7 @@ package org.apache.activemq.web;
import java.util.Collection; import java.util.Collection;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import org.apache.activemq.broker.jmx.ProducerViewMBean; import org.apache.activemq.broker.jmx.ProducerViewMBean;

View File

@ -20,14 +20,14 @@ package org.apache.activemq.web;
import java.io.IOException; import java.io.IOException;
import java.util.UUID; import java.util.UUID;
import javax.servlet.Filter; import jakarta.servlet.Filter;
import javax.servlet.FilterChain; import jakarta.servlet.FilterChain;
import javax.servlet.FilterConfig; import jakarta.servlet.FilterConfig;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.ServletRequest; import jakarta.servlet.ServletRequest;
import javax.servlet.ServletResponse; import jakarta.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import jakarta.servlet.http.HttpSession;
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
/** /**

View File

@ -20,8 +20,8 @@ package org.apache.activemq.web;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpSessionEvent; import jakarta.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener; import jakarta.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener { public class SessionListener implements HttpSessionListener {

View File

@ -18,10 +18,10 @@ package org.apache.activemq.web;
import java.util.LinkedList; import java.util.LinkedList;
import javax.jms.Connection; import jakarta.jms.Connection;
import javax.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Session; import jakarta.jms.Session;
import org.apache.activemq.ActiveMQSession; import org.apache.activemq.ActiveMQSession;
import org.slf4j.Logger; import org.slf4j.Logger;

View File

@ -16,9 +16,9 @@
*/ */
package org.apache.activemq.web; package org.apache.activemq.web;
import javax.servlet.ServletContext; import jakarta.servlet.ServletContext;
import javax.servlet.ServletContextEvent; import jakarta.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import jakarta.servlet.ServletContextListener;
import org.apache.activemq.broker.BrokerService; import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.xbean.BrokerFactoryBean; import org.apache.activemq.xbean.BrokerFactoryBean;

View File

@ -18,7 +18,7 @@ package org.apache.activemq.web;
import java.util.Collection; import java.util.Collection;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import org.apache.activemq.broker.jmx.ProducerViewMBean; import org.apache.activemq.broker.jmx.ProducerViewMBean;

View File

@ -18,7 +18,7 @@ package org.apache.activemq.web;
import java.util.Collection; import java.util.Collection;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import org.apache.activemq.broker.jmx.SubscriptionViewMBean; import org.apache.activemq.broker.jmx.SubscriptionViewMBean;

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.activemq.web; package org.apache.activemq.web;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.MessageConsumer; import jakarta.jms.MessageConsumer;
class UndeliveredAjaxMessage { class UndeliveredAjaxMessage {
private Message message; private Message message;

View File

@ -28,22 +28,22 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
import javax.jms.Connection; import jakarta.jms.Connection;
import javax.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import javax.jms.DeliveryMode; import jakarta.jms.DeliveryMode;
import javax.jms.Destination; import jakarta.jms.Destination;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.MessageConsumer; import jakarta.jms.MessageConsumer;
import javax.jms.MessageProducer; import jakarta.jms.MessageProducer;
import javax.jms.Session; import jakarta.jms.Session;
import javax.servlet.ServletContext; import jakarta.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import jakarta.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionActivationListener; import jakarta.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionBindingEvent; import jakarta.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener; import jakarta.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent; import jakarta.servlet.http.HttpSessionEvent;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.MessageAvailableConsumer; import org.apache.activemq.MessageAvailableConsumer;

View File

@ -21,12 +21,12 @@ import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import javax.servlet.AsyncContext; import jakarta.servlet.AsyncContext;
import javax.servlet.AsyncEvent; import jakarta.servlet.AsyncEvent;
import javax.servlet.AsyncListener; import jakarta.servlet.AsyncListener;
import javax.servlet.DispatcherType; import jakarta.servlet.DispatcherType;
import javax.servlet.ServletRequest; import jakarta.servlet.ServletRequest;
import javax.servlet.ServletRequestWrapper; import jakarta.servlet.ServletRequestWrapper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -20,7 +20,7 @@ import java.net.MalformedURLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import javax.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import javax.management.remote.JMXServiceURL; import javax.management.remote.JMXServiceURL;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;

View File

@ -18,7 +18,7 @@ package org.apache.activemq.web.config;
import java.util.Collection; import java.util.Collection;
import javax.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import javax.management.remote.JMXServiceURL; import javax.management.remote.JMXServiceURL;
import javax.naming.InitialContext; import javax.naming.InitialContext;
import javax.naming.NameNotFoundException; import javax.naming.NameNotFoundException;

View File

@ -29,11 +29,11 @@ import org.eclipse.jetty.webapp.WebAppContext;
public class JspConfigurer { public class JspConfigurer {
public static void configureJetty(Server server, HandlerCollection collection) { public static void configureJetty(Server server, HandlerCollection collection) {
Configuration.ClassList classlist = Configuration.ClassList // Configuration.ClassList classlist = Configuration.ClassList
.setServerDefault( server ); // .setServerDefault( server );
classlist.addBefore( // classlist.addBefore(
"org.eclipse.jetty.webapp.JettyWebXmlConfiguration", // "org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
"org.eclipse.jetty.annotations.AnnotationConfiguration" ); // "org.eclipse.jetty.annotations.AnnotationConfiguration" );
// Set the ContainerIncludeJarPattern so that jetty examines these // Set the ContainerIncludeJarPattern so that jetty examines these
// container-path jars for tlds, web-fragments etc. // container-path jars for tlds, web-fragments etc.
@ -43,7 +43,7 @@ public class JspConfigurer {
if (handler instanceof WebAppContext){ if (handler instanceof WebAppContext){
((WebAppContext) handler).setAttribute( ((WebAppContext) handler).setAttribute(
"org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/[^/]*taglibs.*\\.jar$" ); ".*/[^/]*servlet-api-[^/]*\\.jar$|.*/jakarta.servlet.jsp.jstl-.*\\.jar$|.*/[^/]*taglibs.*\\.jar$" );
} }
} }
} }

View File

@ -18,7 +18,7 @@ package org.apache.activemq.web.config;
import java.util.Collection; import java.util.Collection;
import javax.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import javax.management.remote.JMXServiceURL; import javax.management.remote.JMXServiceURL;

View File

@ -18,7 +18,7 @@ package org.apache.activemq.web.config;
import java.util.Collection; import java.util.Collection;
import javax.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import javax.management.remote.JMXServiceURL; import javax.management.remote.JMXServiceURL;
/** /**

View File

@ -20,12 +20,12 @@ package org.apache.activemq.web.view;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.QueueBrowser; import jakarta.jms.QueueBrowser;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
/** /**
* Represents a rendering of the messages * Represents a rendering of the messages

View File

@ -21,13 +21,13 @@ import java.io.PrintWriter;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.QueueBrowser; import jakarta.jms.QueueBrowser;
import javax.jms.TextMessage; import jakarta.jms.TextMessage;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import com.rometools.rome.feed.synd.SyndContent; import com.rometools.rome.feed.synd.SyndContent;
import com.rometools.rome.feed.synd.SyndContentImpl; import com.rometools.rome.feed.synd.SyndContentImpl;

View File

@ -20,12 +20,12 @@ import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Enumeration; import java.util.Enumeration;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.QueueBrowser; import jakarta.jms.QueueBrowser;
import javax.servlet.ServletException; import jakarta.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
/** /**
* A simple rendering of the contents of a queue appear as a list of message * A simple rendering of the contents of a queue appear as a list of message

View File

@ -18,11 +18,11 @@ package org.apache.activemq.web.view;
import java.io.PrintWriter; import java.io.PrintWriter;
import javax.jms.JMSException; import jakarta.jms.JMSException;
import javax.jms.Message; import jakarta.jms.Message;
import javax.jms.QueueBrowser; import jakarta.jms.QueueBrowser;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.XStream;