001: /*
002: * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: *
023: * Free Software Foundation, Inc.
024: * 59 Temple Place, Suite 330
025: * Boston, MA 02111-1307 USA
026: *
027: * @author Sam
028: */
029:
030: package com.caucho.server.admin;
031:
032: import com.caucho.hessian.io.ExtSerializerFactory;
033: import com.caucho.hessian.io.Hessian2Input;
034: import com.caucho.hessian.io.Hessian2Output;
035: import com.caucho.hessian.io.StringValueDeserializer;
036: import com.caucho.hessian.io.StringValueSerializer;
037: import com.caucho.jmx.remote.JMXService;
038: import com.caucho.util.L10N;
039:
040: import javax.enterprise.deploy.spi.Target;
041: import javax.enterprise.deploy.spi.TargetModuleID;
042: import javax.management.ObjectName;
043: import javax.servlet.ServletException;
044: import javax.servlet.ServletRequest;
045: import javax.servlet.ServletResponse;
046: import java.io.IOException;
047: import java.io.InputStream;
048: import java.util.logging.Level;
049: import java.util.logging.Logger;
050:
051: public class DeployService extends ManagementService implements
052: DeployServiceAPI {
053: private static final Logger log = Logger.getLogger(JMXService.class
054: .getName());
055:
056: private static final L10N L = new L10N(DeployService.class);
057:
058: private ExtSerializerFactory _extFactory;
059:
060: public DeployService(Management management) {
061: super (management, SERVICE_NAME);
062: }
063:
064: @Override
065: public void start() {
066: super .start();
067:
068: _extFactory = new ExtSerializerFactory();
069: _extFactory.addSerializer(ObjectName.class,
070: new StringValueSerializer());
071: _extFactory.addDeserializer(ObjectName.class,
072: new StringValueDeserializer(ObjectName.class));
073:
074: log.info(L.l("Deploy management service started"));
075: }
076:
077: public void service(ServletRequest request, ServletResponse response)
078: throws IOException, ServletException {
079: Hessian2Input in = new Hessian2Input(request.getInputStream());
080: Hessian2Output out = new Hessian2Output(response
081: .getOutputStream());
082:
083: out.findSerializerFactory().addFactory(_extFactory);
084:
085: in.startCall();
086:
087: String method = in.getMethod();
088:
089: try {
090: if ("getTargets".equals(method)) {
091: if (!isReadAllowed(request, response))
092: return;
093:
094: in.completeCall();
095:
096: log.finer("DeployService: getTargets");
097:
098: Target[] targets = getTargets();
099:
100: out.startReply();
101: out.writeObject(targets);
102: out.completeReply();
103: out.close();
104: } else if ("getAvailableModules".equals(method)) {
105: if (!isReadAllowed(request, response))
106: return;
107:
108: String moduleType = in.readString();
109:
110: in.completeCall();
111:
112: log.finer("DeployService: getAvailableModules "
113: + moduleType);
114:
115: TargetModuleID[] modules = getAvailableModules(moduleType);
116:
117: out.startReply();
118: out.writeObject(modules);
119: out.completeReply();
120: out.close();
121: }
122: } catch (Exception e) {
123: log.log(Level.WARNING, e.toString(), e);
124: }
125: }
126:
127: public TargetModuleID[] getAvailableModules(String moduleType) {
128: if (true)
129: throw new UnsupportedOperationException("unimplemented");
130:
131: return new TargetModuleID[0];
132: }
133:
134: public Target[] getTargets() {
135: if (true)
136: throw new UnsupportedOperationException("unimplemented");
137:
138: return new Target[0];
139: }
140:
141: public void distribute(Target[] targets,
142: InputStream deploymentPlan, InputStream archiveIs) {
143: if (true)
144: throw new UnsupportedOperationException("unimplemented");
145: }
146:
147: public void start(TargetModuleID[] ids) {
148: if (true)
149: throw new UnsupportedOperationException("unimplemented");
150: }
151:
152: public void stop(TargetModuleID[] ids) {
153: if (true)
154: throw new UnsupportedOperationException("unimplemented");
155: }
156:
157: public void undeploy(TargetModuleID[] ids) {
158: if (true)
159: throw new UnsupportedOperationException("unimplemented");
160: }
161: }
|