modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml | 1 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java | 147 ++++++++-- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java | 5 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java | 4 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GroupAlertDefinitionGWTService.java | 45 +++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java | 6 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/GroupAlertDefinitionGWTServiceImpl.java | 90 ++++++ modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml | 17 - 8 files changed, 279 insertions(+), 36 deletions(-)
New commits: commit 2dfe611b1651f7312816b114b684fb90ec5f6854 Author: John Mazzitelli mazz@redhat.com Date: Thu Oct 14 17:09:28 2010 -0400
group alert definition editor. there are still things broken in here. more stuff needs to be fixed/tested
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml index 8096fcf..f0916e2 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml @@ -86,6 +86,7 @@ <servlet path="/ContentGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.ContentGWTServiceImpl"/> <servlet path="/DashboardGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.DashboardGWTServiceImpl"/> <servlet path="/EventGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.EventGWTServiceImpl"/> + <servlet path="/GroupAlertDefinitionGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.GroupAlertDefinitionGWTServiceImpl"/> <servlet path="/MeasurementDataGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.MeasurementDataGWTServiceImpl"/> <servlet path="/OperationGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.OperationGWTServiceImpl"/> <servlet path="/RemoteInstallGWTService" class="org.rhq.enterprise.gui.coregui.server.gwt.RemoteInstallGWTServiceImpl"/> diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java index 183faec..e632915 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GroupAlertDefinitionsView.java @@ -26,15 +26,21 @@ package org.rhq.enterprise.gui.coregui.client.alert.definitions; import java.util.ArrayList; import java.util.EnumSet;
+import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.Criteria; -import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.alert.AlertDefinition; import org.rhq.core.domain.resource.ResourceType; +import org.rhq.core.domain.resource.composite.ResourcePermission; import org.rhq.core.domain.resource.group.ResourceGroup; +import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite; +import org.rhq.enterprise.gui.coregui.client.CoreGUI; +import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository; import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository.MetadataType; +import org.rhq.enterprise.gui.coregui.client.util.message.Message; +import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
/** * @author John Mazzitelli @@ -44,10 +50,12 @@ public class GroupAlertDefinitionsView extends AbstractAlertDefinitionsView { public static final String CRITERIA_GROUP_ID = "groupId";
private ResourceGroup group; + private ResourcePermission permissions;
- public GroupAlertDefinitionsView(String locatorId, ResourceGroup group) { + public GroupAlertDefinitionsView(String locatorId, ResourceGroupComposite groupComposite) { super(locatorId, "Group Alert Definitions"); - this.group = group; + this.group = groupComposite.getResourceGroup(); + this.permissions = groupComposite.getResourcePermission();
// make sure we loaded all the type info we'll need. if one of these is null, either the type // doesn't have it or we haven't loaded it yet. since we can't know for sure if it was loaded, we have to ask. @@ -86,55 +94,140 @@ public class GroupAlertDefinitionsView extends AbstractAlertDefinitionsView { }
@Override + public SingleAlertDefinitionView getDetailsView(int id) { + SingleAlertDefinitionView view = super.getDetailsView(id); + if (id == 0) { + // when creating a new alert def, make sure to set this in the new alert def + view.getAlertDefinition().setResourceGroup(group); + } + return view; + } + + @Override protected boolean isAllowedToModifyAlertDefinitions() { - // TODO: see if user can modify group alerts on this group - return true; + return this.permissions.isAlert(); }
@Override protected void newButtonPressed(ListGridRecord[] selection) { - // TODO Auto-generated method stub - String str = "this is not implemented yet but you selected"; - for (ListGridRecord record : selection) { - str += ": " + record.getAttribute("name"); - } - SC.say(str); + newDetails(); }
@Override protected void enableButtonPressed(ListGridRecord[] selection) { - // TODO Auto-generated method stub - String str = "this is not implemented yet but you selected"; + if (selection.length == 0) { + return; + } + + Integer[] alertDefIds = new Integer[selection.length]; + int i = 0; for (ListGridRecord record : selection) { - str += ": " + record.getAttribute("name"); + Integer id = record.getAttributeAsInt(AbstractAlertDefinitionsDataSource.FIELD_ID); + alertDefIds[i++] = id; } - SC.say(str); + + GWTServiceLookup.getGroupAlertDefinitionService().enableGroupAlertDefinitions(alertDefIds, + new AsyncCallback<Integer>() { + @Override + public void onSuccess(Integer result) { + CoreGUI.getMessageCenter().notify( + new Message("[" + result + "] group alert definitions enabled.", Severity.Info)); + GroupAlertDefinitionsView.this.refresh(); + } + + @Override + public void onFailure(Throwable caught) { + CoreGUI.getErrorHandler().handleError("Failed to enable group alert definitions", caught); + } + }); }
@Override protected void disableButtonPressed(ListGridRecord[] selection) { - // TODO Auto-generated method stub - String str = "this is not implemented yet but you selected"; + if (selection.length == 0) { + return; + } + + Integer[] alertDefIds = new Integer[selection.length]; + int i = 0; for (ListGridRecord record : selection) { - str += ": " + record.getAttribute("name"); + Integer id = record.getAttributeAsInt(AbstractAlertDefinitionsDataSource.FIELD_ID); + alertDefIds[i++] = id; } - SC.say(str); + GWTServiceLookup.getGroupAlertDefinitionService().disableGroupAlertDefinitions(alertDefIds, + new AsyncCallback<Integer>() { + @Override + public void onSuccess(Integer result) { + CoreGUI.getMessageCenter().notify( + new Message("[" + result + "] group alert definitions disabled.", Severity.Info)); + GroupAlertDefinitionsView.this.refresh(); + } + + @Override + public void onFailure(Throwable caught) { + CoreGUI.getErrorHandler().handleError("Failed to disable group alert definitions.", caught); + } + }); }
@Override protected void deleteButtonPressed(ListGridRecord[] selection) { - // TODO Auto-generated method stub - String str = "this is not implemented yet but you selected"; + if (selection.length == 0) { + return; + } + + Integer[] alertDefIds = new Integer[selection.length]; + int i = 0; for (ListGridRecord record : selection) { - str += ": " + record.getAttribute("name"); + Integer id = record.getAttributeAsInt(AbstractAlertDefinitionsDataSource.FIELD_ID); + alertDefIds[i++] = id; } - SC.say(str); + GWTServiceLookup.getGroupAlertDefinitionService().removeGroupAlertDefinitions(alertDefIds, + new AsyncCallback<Integer>() { + @Override + public void onSuccess(Integer result) { + CoreGUI.getMessageCenter().notify( + new Message("[" + result + "] group alert definitions deleted.", Severity.Info)); + GroupAlertDefinitionsView.this.refresh(); + } + + @Override + public void onFailure(Throwable caught) { + CoreGUI.getErrorHandler().handleError("Failed to delete group alert definitions.", caught); + } + }); }
@Override - protected void commitAlertDefinition(AlertDefinition alertDefinition) { - // TODO call into server SLSB to store alert def - // GroupAlertDefinitionManagerLocal groupAlertDefinitionManager = LookupUtil.getGroupAlertDefinitionManager(); - // groupAlertDefinitionManager.updateGroupAlertDefinitions(subject, alertDef, true); + protected void commitAlertDefinition(final AlertDefinition alertDefinition) { + if (alertDefinition.getId() == 0) { + GWTServiceLookup.getGroupAlertDefinitionService().createGroupAlertDefinitions(alertDefinition, + Integer.valueOf(this.group.getId()), new AsyncCallback<Integer>() { + @Override + public void onSuccess(Integer result) { + CoreGUI.getMessageCenter().notify(new Message("Alert definition is created", Severity.Info)); + alertDefinition.setId(result.intValue()); + } + + @Override + public void onFailure(Throwable caught) { + CoreGUI.getErrorHandler().handleError("Failed to create alert definition.", caught); + } + }); + } else { + GWTServiceLookup.getGroupAlertDefinitionService().updateGroupAlertDefinitions(alertDefinition, true, + new AsyncCallback<AlertDefinition>() { + @Override + public void onSuccess(AlertDefinition result) { + CoreGUI.getMessageCenter().notify( + new Message("Group alert definition is updated.", Severity.Info)); + } + + @Override + public void onFailure(Throwable caught) { + CoreGUI.getErrorHandler().handleError("Failed to update group alert definition.", caught); + } + }); + } } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java index 3bc7a3f..f53710f 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java @@ -70,9 +70,8 @@ public class ResourceAlertDefinitionsDataSource extends AbstractAlertDefinitions + this.resource.getResourceType().getId() + "&from=" + from.getId() + "&ad=" + parentId); record.setLinkText("View Template"); } else { - record.setAttribute(FIELD_PARENT, "/alerts/Config.do?mode=viewRoles&groupId=" - + groupAlertDefinition.getResourceGroup().getId() + "&from=" + from.getId() + "&ad=" - + groupAlertDefinition.getId()); + record.setAttribute(FIELD_PARENT, "#ResourceGroup/" + groupAlertDefinition.getResourceGroup().getId() + + "/Alerts/Definitions/" + groupAlertDefinition.getId()); record.setLinkText("View Group Definition"); } record.setAttribute(FIELD_READONLY, readOnly); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java index ebd0ab5..adc839d 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GWTServiceLookup.java @@ -39,6 +39,10 @@ public class GWTServiceLookup { return secure(AlertDefinitionGWTServiceAsync.Util.getInstance()); }
+ public static GroupAlertDefinitionGWTServiceAsync getGroupAlertDefinitionService() { + return secure(GroupAlertDefinitionGWTServiceAsync.Util.getInstance()); + } + public static ConfigurationGWTServiceAsync getConfigurationService() { return secure(ConfigurationGWTServiceAsync.Util.getInstance()); } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GroupAlertDefinitionGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GroupAlertDefinitionGWTService.java new file mode 100644 index 0000000..ff4299e --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/GroupAlertDefinitionGWTService.java @@ -0,0 +1,45 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.client.gwt; + +import com.google.gwt.user.client.rpc.RemoteService; + +import org.rhq.core.domain.alert.AlertDefinition; + +public interface GroupAlertDefinitionGWTService extends RemoteService { + + int createGroupAlertDefinitions(AlertDefinition groupAlertDefinition, Integer resourceGroupId) throws Exception; + + /** + * Updates a group alert definition. + * + * @param groupAlertDefinition + * @param purgeInternals must be true if you are updating conditions or dampening settings, can be false otherwise + * @return the updated definition + * @throws Exception + */ + AlertDefinition updateGroupAlertDefinitions(AlertDefinition groupAlertDefinition, boolean purgeInternals) + throws Exception; + + int enableGroupAlertDefinitions(Integer[] groupAlertDefinitionIds) throws Exception; + + int disableGroupAlertDefinitions(Integer[] groupAlertDefinitionIds) throws Exception; + + int removeGroupAlertDefinitions(Integer[] groupAlertDefinitionIds) throws Exception; +} \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java index 4f71441..225de69 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java @@ -40,6 +40,7 @@ import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite; import org.rhq.core.domain.util.PageList; import org.rhq.enterprise.gui.coregui.client.CoreGUI; import org.rhq.enterprise.gui.coregui.client.ViewPath; +import org.rhq.enterprise.gui.coregui.client.alert.definitions.GroupAlertDefinitionsView; import org.rhq.enterprise.gui.coregui.client.components.FullHTMLPane; import org.rhq.enterprise.gui.coregui.client.components.tab.SubTab; import org.rhq.enterprise.gui.coregui.client.components.tab.TwoLevelTab; @@ -265,6 +266,11 @@ public class ResourceGroupDetailView extends AbstractTwoLevelTabSetView<Resource .extendLocatorId("CompositeHistView"), groupComposite), true, true); }
+ // alerts tab is always visible + // TODO what about history subtab? + updateSubTab(this.alertsTab, this.alertDef, new GroupAlertDefinitionsView(alertsTab + .extendLocatorId("AlertDefView"), this.groupComposite), true, true); + this.show(); markForRedraw(); } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/GroupAlertDefinitionGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/GroupAlertDefinitionGWTServiceImpl.java new file mode 100644 index 0000000..7b65ee2 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/GroupAlertDefinitionGWTServiceImpl.java @@ -0,0 +1,90 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2010 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.enterprise.gui.coregui.server.gwt; + +import org.rhq.core.domain.alert.AlertDefinition; +import org.rhq.core.util.exception.ThrowableUtil; +import org.rhq.enterprise.gui.coregui.client.gwt.GroupAlertDefinitionGWTService; +import org.rhq.enterprise.gui.coregui.server.util.SerialUtility; +import org.rhq.enterprise.server.alert.GroupAlertDefinitionManagerLocal; +import org.rhq.enterprise.server.util.LookupUtil; + +public class GroupAlertDefinitionGWTServiceImpl extends AbstractGWTServiceImpl implements + GroupAlertDefinitionGWTService { + private static final long serialVersionUID = 1L; + + private GroupAlertDefinitionManagerLocal groupAlertDefManager = LookupUtil.getGroupAlertDefinitionManager(); + + @Override + public int createGroupAlertDefinitions(AlertDefinition groupAlertDefinition, Integer resourceGroupId) + throws Exception { + try { + int results = groupAlertDefManager.createGroupAlertDefinitions(getSessionSubject(), groupAlertDefinition, + resourceGroupId); + return results; + } catch (Exception e) { + throw new RuntimeException(ThrowableUtil.getAllMessages(e)); + } + } + + @Override + public AlertDefinition updateGroupAlertDefinitions(AlertDefinition groupAlertDefinition, boolean purgeInternals) + throws Exception { + try { + AlertDefinition results = groupAlertDefManager.updateGroupAlertDefinitions(getSessionSubject(), + groupAlertDefinition, purgeInternals); + return SerialUtility.prepare(results, "updateGroupAlertDefinitions"); + } catch (Exception e) { + throw new RuntimeException(ThrowableUtil.getAllMessages(e)); + } + } + + @Override + public int enableGroupAlertDefinitions(Integer[] groupAlertDefinitionIds) throws Exception { + try { + int results = groupAlertDefManager + .enableGroupAlertDefinitions(getSessionSubject(), groupAlertDefinitionIds); + return results; + } catch (Exception e) { + throw new RuntimeException(ThrowableUtil.getAllMessages(e)); + } + } + + @Override + public int disableGroupAlertDefinitions(Integer[] groupAlertDefinitionIds) throws Exception { + try { + int results = groupAlertDefManager.disableGroupAlertDefinitions(getSessionSubject(), + groupAlertDefinitionIds); + return results; + } catch (Exception e) { + throw new RuntimeException(ThrowableUtil.getAllMessages(e)); + } + } + + @Override + public int removeGroupAlertDefinitions(Integer[] groupAlertDefinitionIds) throws Exception { + try { + int results = groupAlertDefManager + .removeGroupAlertDefinitions(getSessionSubject(), groupAlertDefinitionIds); + return results; + } catch (Exception e) { + throw new RuntimeException(ThrowableUtil.getAllMessages(e)); + } + } +} \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml index 377ae0d..40e7f16 100644 --- a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml +++ b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml @@ -42,18 +42,19 @@ </servlet> <servlet> <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI AlertGWTService</servlet-name> - <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.AlertGWTServiceImpl - </servlet-class> + <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.AlertGWTServiceImpl</servlet-class> </servlet> <servlet> <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI AlertDefinitionGWTService</servlet-name> - <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.AlertDefinitionGWTServiceImpl - </servlet-class> + <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.AlertDefinitionGWTServiceImpl</servlet-class> + </servlet> + <servlet> + <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI GroupAlertDefinitionGWTService</servlet-name> + <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.GroupAlertDefinitionGWTServiceImpl</servlet-class> </servlet> <servlet> <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI OperationGWTService</servlet-name> - <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.OperationGWTServiceImpl - </servlet-class> + <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.OperationGWTServiceImpl</servlet-class> </servlet> <servlet> <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI BundleGWTService</servlet-name> @@ -158,6 +159,10 @@ <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/AlertDefinitionGWTService</url-pattern> </servlet-mapping> <servlet-mapping> + <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI GroupAlertDefinitionGWTService</servlet-name> + <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/GroupAlertDefinitionGWTService</url-pattern> + </servlet-mapping> + <servlet-mapping> <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI OperationGWTService</servlet-name> <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/OperationGWTService</url-pattern> </servlet-mapping>