You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2012/06/06 21:58:45 UTC
svn commit: r1347083 - in /openejb/trunk/openejb/tomee:
tomee-plus-webapp/src/main/webapp/WEB-INF/
tomee-webapp/src/main/java/org/apache/tomee/webapp/
tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/
tomee-webapp/src/main/webapp/WEB-INF/
Author: tveronezi
Date: Wed Jun 6 19:58:44 2012
New Revision: 1347083
URL: http://svn.apache.org/viewvc?rev=1347083&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-205
preparing the deployment servlet
Added:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java
- copied, changed from r1347015, openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
Modified:
openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
Modified: openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml?rev=1347083&r1=1347082&r2=1347083&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml Wed Jun 6 19:58:44 2012
@@ -21,8 +21,16 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0" metadata-complete="true">
+ <display-name>Tomee Application</display-name>
- <display-name>OpenEJB Loader Application</display-name>
+ <error-page>
+ <exception-type>
+ org.apache.tomee.webapp.TomeeException
+ </exception-type>
+ <location>
+ /error
+ </location>
+ </error-page>
<listener>
<listener-class>org.apache.tomee.webapp.listener.UserSessionListener</listener-class>
@@ -60,6 +68,11 @@
</servlet>
<servlet>
+ <servlet-name>ErrorServlet</servlet-name>
+ <servlet-class>org.apache.tomee.webapp.servlet.ErrorServlet</servlet-class>
+ </servlet>
+
+ <servlet>
<servlet-name>WsConsole</servlet-name>
<servlet-class>org.apache.tomee.webapp.servlet.ConsoleServlet</servlet-class>
</servlet>
@@ -90,6 +103,11 @@
</servlet-mapping>
<servlet-mapping>
+ <servlet-name>ErrorServlet</servlet-name>
+ <url-pattern>/error/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
<servlet-name>DeployServlet</servlet-name>
<url-pattern>/deploy/*</url-pattern>
</servlet-mapping>
Added: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java?rev=1347083&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java (added)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java Wed Jun 6 19:58:44 2012
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomee.webapp;
+
+public class TomeeException extends RuntimeException {
+
+ public TomeeException(Throwable cause) {
+ super(cause);
+ }
+}
Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java?rev=1347083&r1=1347082&r2=1347083&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java Wed Jun 6 19:58:44 2012
@@ -18,19 +18,17 @@
package org.apache.tomee.webapp.servlet;
import com.google.gson.Gson;
-import javax.ejb.EJB;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.assembler.Deployer;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
+import org.apache.tomee.webapp.TomeeException;
+import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -44,22 +42,19 @@ public class DeployServlet extends HttpS
@Override
protected void doPost(HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
- final String path;
+ final Map<String, Object> result = new HashMap<String, Object>();
+
try {
final AppInfo info = deployer.deploy(req.getParameter("path"));
// the path is translated from the parameter to a file path
// the input can be "mvn:org.superbiz/rest-example.1.0/war" for instance or an http url
- path = info.path;
- } catch (OpenEJBException e) {
- throw new OpenEJBRuntimeException(e); // TODO: show back to the user the exception
- }
+ result.put("info", info.path);
+ result.put("appId", info.appId);
- final File file = new File(path);
- final Map<String, Object> result = new HashMap<String, Object>();
- result.put("deployed", Boolean.TRUE);
- // TODO: is it needed or do we use the input path since it is more explicit for the user?
- result.put("file", file.getAbsolutePath());
+ } catch (Exception e) {
+ throw new TomeeException(e);
+ }
resp.setContentType("text/plain");
resp.setCharacterEncoding("UTF-8");
Copied: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java (from r1347015, openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java?p2=openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java&p1=openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java&r1=1347015&r2=1347083&rev=1347083&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java Wed Jun 6 19:58:44 2012
@@ -18,48 +18,47 @@
package org.apache.tomee.webapp.servlet;
import com.google.gson.Gson;
-import javax.inject.Inject;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.OpenEJBRuntimeException;
-import org.apache.openejb.assembler.Deployer;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.File;
import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
-public class DeployServlet extends HttpServlet {
- public static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, DeployServlet.class);
-
- @Inject
- private Deployer deployer;
+public class ErrorServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
- final String path;
- try {
- final AppInfo info = deployer.deploy(req.getParameter("path"));
-
- // the path is translated from the parameter to a file path
- // the input can be "mvn:org.superbiz/rest-example.1.0/war" for instance or an http url
- path = info.path;
- } catch (OpenEJBException e) {
- throw new OpenEJBRuntimeException(e); // TODO: show back to the user the exception
- }
+ writeJson(req, resp);
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ writeJson(req, resp);
+ }
- final File file = new File(path);
+ private void writeJson(final HttpServletRequest req, final HttpServletResponse resp) throws IOException {
final Map<String, Object> result = new HashMap<String, Object>();
- result.put("deployed", Boolean.TRUE);
- // TODO: is it needed or do we use the input path since it is more explicit for the user?
- result.put("file", file.getAbsolutePath());
+
+ result.put("status_code", String.valueOf(req.getAttribute("javax.servlet.error.status_code")));
+ result.put("message", String.valueOf(req.getAttribute("javax.servlet.error.message")));
+
+ {
+ final Throwable throwable = (Throwable) req.getAttribute("javax.servlet.error.exception");
+
+ final Writer writer = new StringWriter();
+ final PrintWriter printWriter = new PrintWriter(writer);
+ throwable.printStackTrace(printWriter);
+
+ result.put("stackTrace", writer.toString());
+ result.put("exception_type", throwable.getClass().getName());
+ }
resp.setContentType("text/plain");
resp.setCharacterEncoding("UTF-8");
Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml?rev=1347083&r1=1347082&r2=1347083&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml Wed Jun 6 19:58:44 2012
@@ -21,8 +21,16 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0" metadata-complete="true">
+ <display-name>Tomee Application</display-name>
- <display-name>OpenEJB Loader Application</display-name>
+ <error-page>
+ <exception-type>
+ org.apache.tomee.webapp.TomeeException
+ </exception-type>
+ <location>
+ /error
+ </location>
+ </error-page>
<listener>
<listener-class>org.apache.tomee.webapp.listener.UserSessionListener</listener-class>
@@ -60,6 +68,11 @@
</servlet>
<servlet>
+ <servlet-name>ErrorServlet</servlet-name>
+ <servlet-class>org.apache.tomee.webapp.servlet.ErrorServlet</servlet-class>
+ </servlet>
+
+ <servlet>
<servlet-name>WsConsole</servlet-name>
<servlet-class>org.apache.tomee.webapp.servlet.ConsoleServlet</servlet-class>
</servlet>
@@ -90,6 +103,11 @@
</servlet-mapping>
<servlet-mapping>
+ <servlet-name>ErrorServlet</servlet-name>
+ <url-pattern>/error/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
<servlet-name>DeployServlet</servlet-name>
<url-pattern>/deploy/*</url-pattern>
</servlet-mapping>