Issue #2191: Registry Garbage Collection
Change-Id: I15094a928b4f8793daab751b85a20b19b6352438 Former-commit-id:34764a4a09
[formerly3aebfb2956
[formerly 6afda27e19d0ea38c547afc9a28c55525706f9f1]] Former-commit-id:3aebfb2956
Former-commit-id:0af12c7e8b
This commit is contained in:
parent
0b21274439
commit
4a482184ca
18 changed files with 727 additions and 49 deletions
|
@ -89,7 +89,7 @@ public class RegistryObjectListType implements Serializable {
|
|||
private Integer key;
|
||||
|
||||
@ManyToMany
|
||||
@Cascade(value = { org.hibernate.annotations.CascadeType.PERSIST })
|
||||
@Cascade({})
|
||||
@JoinTable(schema = "ebxml")
|
||||
@XmlElement(name = "RegistryObject")
|
||||
@DynamicSerializeElement
|
||||
|
|
|
@ -43,6 +43,7 @@ import org.hibernate.annotations.Cache;
|
|||
import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
import org.hibernate.annotations.Index;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.persist.IPersistableDataObject;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||
|
||||
|
@ -88,7 +89,8 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
|||
// "child_slot_key", referencedColumnName = "key")))
|
||||
@Cache(region = "registryObjects", usage = CacheConcurrencyStrategy.TRANSACTIONAL, include = "all")
|
||||
@Table(schema = "ebxml", name = "Slot")
|
||||
public class SlotType extends ExtensibleObjectType implements Serializable {
|
||||
public class SlotType extends ExtensibleObjectType implements
|
||||
IPersistableDataObject<Integer>, Serializable {
|
||||
|
||||
private static final long serialVersionUID = -2184582316481503043L;
|
||||
|
||||
|
@ -98,7 +100,7 @@ public class SlotType extends ExtensibleObjectType implements Serializable {
|
|||
@XmlTransient
|
||||
private Integer key;
|
||||
|
||||
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
|
||||
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
||||
@XmlElement(name = "SlotValue")
|
||||
@DynamicSerializeElement
|
||||
protected ValueType slotValue;
|
||||
|
@ -258,4 +260,9 @@ public class SlotType extends ExtensibleObjectType implements Serializable {
|
|||
this.type = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getIdentifier() {
|
||||
return key;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ import javax.xml.bind.annotation.XmlType;
|
|||
import org.hibernate.annotations.Cache;
|
||||
import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.persist.IPersistableDataObject;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
|
||||
/**
|
||||
|
@ -75,7 +76,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
|||
@Cache(region = "registryObjects", usage = CacheConcurrencyStrategy.TRANSACTIONAL)
|
||||
@Table(schema = "ebxml", name = "Value")
|
||||
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
|
||||
public abstract class ValueType {
|
||||
public abstract class ValueType implements IPersistableDataObject<Integer> {
|
||||
|
||||
@Id
|
||||
@SequenceGenerator(name = "ValueTypeGenerator", schema = "ebxml", sequenceName = "ebxml.Value_sequence")
|
||||
|
@ -89,4 +90,9 @@ public abstract class ValueType {
|
|||
|
||||
public abstract String getColumnName();
|
||||
|
||||
@Override
|
||||
public Integer getIdentifier() {
|
||||
return key;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -358,7 +358,12 @@ public abstract class SessionManagedDao<IDENTIFIER extends Serializable, ENTITY
|
|||
.createQuery(statement).setCacheable(true)
|
||||
.setCacheRegion(QUERY_CACHE_REGION);
|
||||
for (int i = 0; i < params.length; i += 2) {
|
||||
query.setParameter((String) params[i], params[i + 1]);
|
||||
if (params[i + 1] instanceof Collection<?>) {
|
||||
query.setParameterList((String) params[i],
|
||||
(Collection<?>) params[i + 1]);
|
||||
} else {
|
||||
query.setParameter((String) params[i], params[i + 1]);
|
||||
}
|
||||
}
|
||||
return query.executeUpdate();
|
||||
} catch (Throwable e) {
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
|
||||
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
||||
|
||||
<camelContext id="ebxml-garbagecollector" xmlns="http://camel.apache.org/schema/spring"
|
||||
errorHandlerRef="errorHandler">
|
||||
<endpoint id="garbageCollectEndpoint"
|
||||
uri="quartz://registry/garbageCollect/?cron=${ebxml-garbage-collect-process.cron}" />
|
||||
<route id="garbageCollectRoute">
|
||||
<from uri="garbageCollectEndpoint" />
|
||||
<bean ref="RegistryGarbageCollector" method="gc" />
|
||||
</route>
|
||||
</camelContext>
|
||||
|
||||
</beans>
|
|
@ -1,36 +1,42 @@
|
|||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
|
||||
|
||||
<bean id="edexRegistryManagerFactory"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.util.EDEXRegistryManagerFactory">
|
||||
<property name="queryManager" ref="queryServiceImpl" />
|
||||
<property name="lifecycleManager" ref="lcmServiceImpl" />
|
||||
</bean>
|
||||
<bean id="edexRegistryManagerFactory"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.util.EDEXRegistryManagerFactory">
|
||||
<property name="queryManager" ref="queryServiceImpl" />
|
||||
<property name="lifecycleManager" ref="lcmServiceImpl" />
|
||||
</bean>
|
||||
|
||||
<bean id="registryHandler"
|
||||
class="com.raytheon.uf.common.registry.ebxml.FactoryRegistryHandler">
|
||||
<property name="lcmFactory" ref="edexRegistryManagerFactory" />
|
||||
<property name="queryFactory" ref="edexRegistryManagerFactory" />
|
||||
<property name="encoderStrategy" ref="registryEncoder" />
|
||||
</bean>
|
||||
<bean id="registryHandler"
|
||||
class="com.raytheon.uf.common.registry.ebxml.FactoryRegistryHandler">
|
||||
<property name="lcmFactory" ref="edexRegistryManagerFactory" />
|
||||
<property name="queryFactory" ref="edexRegistryManagerFactory" />
|
||||
<property name="encoderStrategy" ref="registryEncoder" />
|
||||
</bean>
|
||||
|
||||
<bean id="edexRegistryManager"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.util.EDEXRegistryManager">
|
||||
<property name="xacmlPep" ref="XACMLPolicyEnforcementPoint" />
|
||||
<property name="registryHandler" ref="registryHandler" />
|
||||
</bean>
|
||||
<bean id="edexRegistryManager"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.util.EDEXRegistryManager">
|
||||
<property name="xacmlPep" ref="XACMLPolicyEnforcementPoint" />
|
||||
<property name="registryHandler" ref="registryHandler" />
|
||||
</bean>
|
||||
|
||||
<bean id="registryEncoderType"
|
||||
class="com.raytheon.uf.common.registry.ebxml.encoder.RegistryEncoders$Type"
|
||||
factory-method="valueOf">
|
||||
<constructor-arg value="JAXB" />
|
||||
</bean>
|
||||
<bean id="registryEncoderType"
|
||||
class="com.raytheon.uf.common.registry.ebxml.encoder.RegistryEncoders$Type"
|
||||
factory-method="valueOf">
|
||||
<constructor-arg value="JAXB" />
|
||||
</bean>
|
||||
|
||||
<bean id="registryEncoder"
|
||||
class="com.raytheon.uf.common.registry.ebxml.encoder.RegistryEncoders"
|
||||
factory-method="ofType">
|
||||
<constructor-arg ref="registryEncoderType" />
|
||||
</bean>
|
||||
<bean id="registryEncoder"
|
||||
class="com.raytheon.uf.common.registry.ebxml.encoder.RegistryEncoders"
|
||||
factory-method="ofType">
|
||||
<constructor-arg ref="registryEncoderType" />
|
||||
</bean>
|
||||
|
||||
<bean id="RegistryGarbageCollector"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.services.RegistryGarbageCollector">
|
||||
<constructor-arg name="slotDao" ref="slotTypeDao" />
|
||||
<constructor-arg name="eventDao" ref="AuditableEventTypeDao" />
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
|
|
|
@ -2,15 +2,19 @@
|
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
|
||||
|
||||
<bean id="slotTypeDao" class="com.raytheon.uf.edex.registry.ebxml.dao.SlotTypeDao">
|
||||
<property name="sessionFactory" ref="metadataSessionFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="registryObjectDao"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.dao.RegistryObjectDao">
|
||||
<property name="sessionFactory" ref="metadataSessionFactory" />
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="registryDao" class="com.raytheon.uf.edex.registry.ebxml.dao.RegistryDao">
|
||||
<property name="sessionFactory" ref="metadataSessionFactory" />
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="federationDao" class="com.raytheon.uf.edex.registry.ebxml.dao.FederationDao">
|
||||
<property name="sessionFactory" ref="metadataSessionFactory" />
|
||||
</bean>
|
||||
|
@ -72,8 +76,9 @@
|
|||
<property name="sessionFactory" ref="metadataSessionFactory" />
|
||||
<property name="associationDao" ref="associationDao" />
|
||||
</bean>
|
||||
|
||||
<bean name="notificationTypeDao" class="com.raytheon.uf.edex.registry.ebxml.dao.NotificationTypeDao" >
|
||||
|
||||
<bean name="notificationTypeDao"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.dao.NotificationTypeDao">
|
||||
<property name="sessionFactory" ref="metadataSessionFactory" />
|
||||
</bean>
|
||||
</beans>
|
|
@ -1,4 +1,5 @@
|
|||
# The period which registry subscriptions are processed
|
||||
ebxml-subscription-process.cron=0+0/1+*+*+*+?
|
||||
ebxml-garbage-collect-process.cron=0/30+*+*+*+*+?
|
||||
# Master switch enabling email transmission
|
||||
ebxml-email.enabled=false
|
|
@ -21,6 +21,7 @@
|
|||
package com.raytheon.uf.edex.registry.ebxml.dao;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -36,6 +37,9 @@ import oasis.names.tc.ebxml.regrep.xsd.rim.v4.RegistryObjectType;
|
|||
import oasis.names.tc.ebxml.regrep.xsd.rim.v4.VersionInfoType;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.rs.v4.RegistryRequestType;
|
||||
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.raytheon.uf.common.registry.constants.ActionTypes;
|
||||
import com.raytheon.uf.common.registry.constants.RegistryObjectTypes;
|
||||
import com.raytheon.uf.common.registry.constants.StatusTypes;
|
||||
|
@ -84,6 +88,19 @@ public class AuditableEventTypeDao extends
|
|||
/** Order by clause */
|
||||
private static final String ORDER_CLAUSE = " order by event.timestamp asc";
|
||||
|
||||
/** The number of hours to retain auditable events */
|
||||
private static final int AUDITABLE_EVENT_RETENTION_TIME = 48;
|
||||
|
||||
/** Cutoff parameter for the query to get the expired events */
|
||||
private static final String GET_EXPIRED_EVENTS_QUERY_CUTOFF_PARAMETER = "cutoff";
|
||||
|
||||
/** Batch size for the query to get expired events */
|
||||
private static final int GET_EXPIRED_EVENTS_QUERY_BATCH_SIZE = 2500;
|
||||
|
||||
/** Query to get Expired AuditableEvents */
|
||||
private static final String GET_EXPIRED_EVENTS_QUERY = "FROM AuditableEventType event where event.timestamp < :"
|
||||
+ GET_EXPIRED_EVENTS_QUERY_CUTOFF_PARAMETER;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
|
@ -97,6 +114,28 @@ public class AuditableEventTypeDao extends
|
|||
template.save(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes auditable events older than 48 hrs old
|
||||
*
|
||||
* @throws EbxmlRegistryException
|
||||
* If errors occur purging auditable events
|
||||
*/
|
||||
@Transactional(propagation = Propagation.REQUIRED)
|
||||
public void deleteExpiredEvents() throws EbxmlRegistryException {
|
||||
Calendar cutoffTime = TimeUtil.newGmtCalendar();
|
||||
cutoffTime.add(Calendar.HOUR_OF_DAY, -AUDITABLE_EVENT_RETENTION_TIME);
|
||||
List<AuditableEventType> expiredEvents = this.executeHQLQuery(
|
||||
GET_EXPIRED_EVENTS_QUERY, GET_EXPIRED_EVENTS_QUERY_BATCH_SIZE,
|
||||
GET_EXPIRED_EVENTS_QUERY_CUTOFF_PARAMETER, EbxmlObjectUtil
|
||||
.getTimeAsXMLGregorianCalendar(cutoffTime
|
||||
.getTimeInMillis()));
|
||||
if (!expiredEvents.isEmpty()) {
|
||||
statusHandler.info("Deleting " + expiredEvents.size()
|
||||
+ " Auditable Events prior to: " + cutoffTime.getTime());
|
||||
this.template.deleteAll(expiredEvents);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the events of interest based on the start time, end time, and the
|
||||
* list of objects of interest
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.registry.ebxml.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import oasis.names.tc.ebxml.regrep.xsd.rim.v4.SlotType;
|
||||
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.raytheon.uf.edex.database.dao.SessionManagedDao;
|
||||
|
||||
/**
|
||||
*
|
||||
* Data Access object for interacting with slot objects
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 7/11/2013 1707 bphillip Initial implementation
|
||||
* </pre>
|
||||
*
|
||||
* @author bphillip
|
||||
* @version 1
|
||||
*/
|
||||
public class SlotTypeDao extends SessionManagedDao<Integer, SlotType> {
|
||||
|
||||
/** SQL query to get the ids of the orphaned slots */
|
||||
private static final String ORPHANED_SLOT_QUERY = "select key from ebxml.slot where key not in "
|
||||
+ "(select child_slot_key from ebxml.action_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.personname_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.objectref_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.parameter_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.queryexpression_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.registryobject_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.query_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.slot_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.telephonenumber_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.deliveryinfo_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.emailaddress_slot "
|
||||
+ "UNION "
|
||||
+ "select child_slot_key from ebxml.postaladdress_slot "
|
||||
+ ")";
|
||||
|
||||
/** Keys parameter for the query to get the orphaned slot objects */
|
||||
private static final String GET_BY_ID_QUERY_KEYS_PARAMETER = "keys";
|
||||
|
||||
/** Result batch size for the query to get the orphaned slot objects */
|
||||
private static final int GET_BY_ID_QUERY_BATCH_SIZE = 1000;
|
||||
|
||||
private static final String GET_BY_ID_QUERY = "FROM SlotType slot where slot.key in (:"
|
||||
+ GET_BY_ID_QUERY_KEYS_PARAMETER + ")";
|
||||
|
||||
@Override
|
||||
protected Class<SlotType> getEntityClass() {
|
||||
return SlotType.class;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Transactional(propagation = Propagation.REQUIRED)
|
||||
public void deleteOrphanedSlots() {
|
||||
List<Integer> orphanedSlotIds = this.getSessionFactory()
|
||||
.getCurrentSession().createSQLQuery(ORPHANED_SLOT_QUERY).list();
|
||||
if (!orphanedSlotIds.isEmpty()) {
|
||||
|
||||
List<SlotType> slots = this.executeHQLQuery(GET_BY_ID_QUERY,
|
||||
GET_BY_ID_QUERY_BATCH_SIZE, GET_BY_ID_QUERY_KEYS_PARAMETER,
|
||||
orphanedSlotIds);
|
||||
statusHandler.info("Removing " + orphanedSlotIds.size()
|
||||
+ " orphaned slots...");
|
||||
this.deleteAll(slots);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.registry.ebxml.services;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import com.raytheon.uf.edex.registry.ebxml.dao.AuditableEventTypeDao;
|
||||
import com.raytheon.uf.edex.registry.ebxml.dao.SlotTypeDao;
|
||||
import com.raytheon.uf.edex.registry.ebxml.exception.EbxmlRegistryException;
|
||||
|
||||
/**
|
||||
*
|
||||
* Garbage collector object to clean up unused and orphaned objects from the
|
||||
* registry. The gc method is run on a cron to continuously clean up the
|
||||
* registry.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 7/11/2013 1707 bphillip Initial implementation
|
||||
* </pre>
|
||||
*
|
||||
* @author bphillip
|
||||
* @version 1
|
||||
*/
|
||||
public class RegistryGarbageCollector {
|
||||
|
||||
/** Sentinel to denote if the garbage collection is currently running */
|
||||
private AtomicBoolean running = new AtomicBoolean(false);
|
||||
|
||||
/** Data access object for SlotType */
|
||||
private SlotTypeDao slotDao;
|
||||
|
||||
/** Data access object for AuditableEventType */
|
||||
private AuditableEventTypeDao eventDao;
|
||||
|
||||
/**
|
||||
* Creates a new GarbageCollector object
|
||||
*/
|
||||
public RegistryGarbageCollector() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new GarbageCollector object
|
||||
*
|
||||
* @param slotDao
|
||||
* The slot dao to use
|
||||
* @param eventDao
|
||||
* The auditable event dao to use
|
||||
*/
|
||||
public RegistryGarbageCollector(SlotTypeDao slotDao,
|
||||
AuditableEventTypeDao eventDao) {
|
||||
this.slotDao = slotDao;
|
||||
this.eventDao = eventDao;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleans up the registry by removing unused and/or orphaned objects
|
||||
*/
|
||||
public void gc() throws EbxmlRegistryException {
|
||||
if (!running.compareAndSet(false, true)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
eventDao.deleteExpiredEvents();
|
||||
slotDao.deleteOrphanedSlots();
|
||||
} finally {
|
||||
running.set(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.registry.ebxml.services.cataloger;
|
||||
|
||||
import javax.jws.WebMethod;
|
||||
import javax.jws.WebParam;
|
||||
import javax.jws.WebResult;
|
||||
|
||||
import oasis.names.tc.ebxml.regrep.wsdl.registry.services.v4.Cataloger;
|
||||
import oasis.names.tc.ebxml.regrep.wsdl.registry.services.v4.MsgRegistryException;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.spi.v4.CatalogObjectsRequest;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.spi.v4.CatalogObjectsResponse;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
*
|
||||
* Wrapper for the cataloger service to be used with the SOAP interface.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 7/11/2013 1707 bphillip Initial implementation
|
||||
* </pre>
|
||||
*
|
||||
* @author bphillip
|
||||
* @version 1
|
||||
*/
|
||||
@Transactional
|
||||
public class CatalogerImplWrapper implements Cataloger {
|
||||
|
||||
private CatalogerImpl cataloger;
|
||||
|
||||
public CatalogerImplWrapper() {
|
||||
|
||||
}
|
||||
|
||||
public CatalogerImplWrapper(CatalogerImpl cataloger) {
|
||||
this.cataloger = cataloger;
|
||||
}
|
||||
|
||||
@Override
|
||||
@WebMethod(action = "urn:oasis:names:tc:ebxml-regrep:wsdl:spi:bindings:4.0:Cataloger#catalogObjects")
|
||||
@WebResult(name = "CatalogObjectsResponse", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:spi:4.0", partName = "partCatalogObjectsResponse")
|
||||
public CatalogObjectsResponse catalogObjects(
|
||||
@WebParam(name = "CatalogObjectsRequest", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:spi:4.0", partName = "partCatalogObjectsRequest") CatalogObjectsRequest partCatalogObjectsRequest)
|
||||
throws MsgRegistryException {
|
||||
return cataloger.catalogObjects(partCatalogObjectsRequest);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.registry.ebxml.services.lifecycle;
|
||||
|
||||
import javax.jws.WebMethod;
|
||||
import javax.jws.WebParam;
|
||||
import javax.jws.WebResult;
|
||||
|
||||
import oasis.names.tc.ebxml.regrep.wsdl.registry.services.v4.LifecycleManager;
|
||||
import oasis.names.tc.ebxml.regrep.wsdl.registry.services.v4.MsgRegistryException;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.lcm.v4.RemoveObjectsRequest;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.lcm.v4.SubmitObjectsRequest;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.lcm.v4.UpdateObjectsRequest;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.rs.v4.RegistryResponseType;
|
||||
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
*
|
||||
* Wrapper for the lifecyclemanager service to be used with the SOAP interface.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 7/11/2013 1707 bphillip Initial implementation
|
||||
* </pre>
|
||||
*
|
||||
* @author bphillip
|
||||
* @version 1
|
||||
*/
|
||||
@Transactional(propagation = Propagation.REQUIRED)
|
||||
public class LifecycleManagerImplWrapper implements LifecycleManager {
|
||||
|
||||
private LifecycleManagerImpl lifecycleManager;
|
||||
|
||||
public LifecycleManagerImplWrapper() {
|
||||
|
||||
}
|
||||
|
||||
public LifecycleManagerImplWrapper(LifecycleManagerImpl lifecycleManager) {
|
||||
this.lifecycleManager = lifecycleManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
@WebMethod(action = "urn:oasis:names:tc:ebxml-regrep:wsdl:registry:bindings:4.0:LifecycleManager#removeObjects")
|
||||
@WebResult(name = "RegistryResponse", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:rs:4.0", partName = "partRegistryResponse")
|
||||
public RegistryResponseType removeObjects(
|
||||
@WebParam(name = "RemoveObjectsRequest", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:lcm:4.0", partName = "partRemoveObjectsRequest") RemoveObjectsRequest partRemoveObjectsRequest)
|
||||
throws MsgRegistryException {
|
||||
return lifecycleManager.removeObjects(partRemoveObjectsRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
@WebMethod(action = "urn:oasis:names:tc:ebxml-regrep:wsdl:registry:bindings:4.0:LifecycleManager#submitObjects")
|
||||
@WebResult(name = "RegistryResponse", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:rs:4.0", partName = "partRegistryResponse")
|
||||
public RegistryResponseType submitObjects(
|
||||
@WebParam(name = "SubmitObjectsRequest", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:lcm:4.0", partName = "partSubmitObjectsRequest") SubmitObjectsRequest partSubmitObjectsRequest)
|
||||
throws MsgRegistryException {
|
||||
return lifecycleManager.submitObjects(partSubmitObjectsRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
@WebMethod(action = "urn:oasis:names:tc:ebxml-regrep:wsdl:registry:bindings:4.0:LifecycleManager#updateObjects")
|
||||
@WebResult(name = "RegistryResponse", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:rs:4.0", partName = "partRegistryResponse")
|
||||
public RegistryResponseType updateObjects(
|
||||
@WebParam(name = "UpdateObjectsRequest", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:lcm:4.0", partName = "partUpdateObjectsRequest") UpdateObjectsRequest partUpdateObjectsRequest)
|
||||
throws MsgRegistryException {
|
||||
return lifecycleManager.updateObjects(partUpdateObjectsRequest);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.registry.ebxml.services.notification;
|
||||
|
||||
import javax.jws.Oneway;
|
||||
import javax.jws.WebMethod;
|
||||
import javax.jws.WebParam;
|
||||
|
||||
import oasis.names.tc.ebxml.regrep.wsdl.registry.services.v4.NotificationListener;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.rim.v4.NotificationType;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
*
|
||||
* Wrapper for the notificationlistener service to be used with the SOAP
|
||||
* interface.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 7/11/2013 1707 bphillip Initial implementation
|
||||
* </pre>
|
||||
*
|
||||
* @author bphillip
|
||||
* @version 1
|
||||
*/
|
||||
@Transactional
|
||||
public class NotificationListenerImplWrapper implements NotificationListener {
|
||||
|
||||
private NotificationListenerImpl notificationListener;
|
||||
|
||||
public NotificationListenerImplWrapper() {
|
||||
|
||||
}
|
||||
|
||||
public NotificationListenerImplWrapper(
|
||||
NotificationListenerImpl notificationListener) {
|
||||
this.notificationListener = notificationListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
@WebMethod(action = "urn:oasis:names:tc:ebxml-regrep:wsdl:NotificationListener:bindings:4.0:NotificationListener:onNotification")
|
||||
@Oneway
|
||||
public void onNotification(
|
||||
@WebParam(name = "Notification", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:rim:4.0", partName = "Notification") NotificationType notification) {
|
||||
notificationListener.onNotification(notification);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.registry.ebxml.services.query;
|
||||
|
||||
import javax.jws.WebMethod;
|
||||
import javax.jws.WebParam;
|
||||
import javax.jws.WebResult;
|
||||
|
||||
import oasis.names.tc.ebxml.regrep.wsdl.registry.services.v4.MsgRegistryException;
|
||||
import oasis.names.tc.ebxml.regrep.wsdl.registry.services.v4.QueryManager;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.query.v4.QueryRequest;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.query.v4.QueryResponse;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
*
|
||||
* Wrapper for the query service to be used with the SOAP interface.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 7/11/2013 1707 bphillip Initial implementation
|
||||
* </pre>
|
||||
*
|
||||
* @author bphillip
|
||||
* @version 1
|
||||
*/
|
||||
@Transactional
|
||||
public class QueryManagerImplWrapper implements QueryManager {
|
||||
|
||||
private QueryManagerImpl queryManager;
|
||||
|
||||
public QueryManagerImplWrapper() {
|
||||
|
||||
}
|
||||
|
||||
public QueryManagerImplWrapper(QueryManagerImpl queryManager) {
|
||||
this.queryManager = queryManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
@WebMethod(action = "urn:oasis:names:tc:ebxml-regrep:wsdl:registry:bindings:4.0:QueryManager#executeQuery")
|
||||
@WebResult(name = "QueryResponse", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:query:4.0", partName = "partQueryResponse")
|
||||
public QueryResponse executeQuery(
|
||||
@WebParam(name = "QueryRequest", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:query:4.0", partName = "partQueryRequest") QueryRequest partQueryRequest)
|
||||
throws MsgRegistryException {
|
||||
return queryManager.executeQuery(partQueryRequest);
|
||||
}
|
||||
|
||||
}
|
|
@ -46,7 +46,6 @@ import com.raytheon.uf.edex.registry.ebxml.services.query.types.CanonicalEbxmlQu
|
|||
* @author bphillip
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class GarbageCollector extends CanonicalEbxmlQuery {
|
||||
|
||||
@Override
|
||||
|
@ -57,7 +56,6 @@ public class GarbageCollector extends CanonicalEbxmlQuery {
|
|||
@Override
|
||||
protected void query(QueryType queryType, QueryResponse queryResponse,
|
||||
String client) throws EbxmlRegistryException {
|
||||
// TODO:Implement
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.registry.ebxml.services.validator;
|
||||
|
||||
import javax.jws.WebMethod;
|
||||
import javax.jws.WebParam;
|
||||
import javax.jws.WebResult;
|
||||
|
||||
import oasis.names.tc.ebxml.regrep.wsdl.registry.services.v4.MsgRegistryException;
|
||||
import oasis.names.tc.ebxml.regrep.wsdl.registry.services.v4.Validator;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.spi.v4.ValidateObjectsRequest;
|
||||
import oasis.names.tc.ebxml.regrep.xsd.spi.v4.ValidateObjectsResponse;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
*
|
||||
* Wrapper for the validator service to be used with the SOAP interface.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 7/11/2013 1707 bphillip Initial implementation
|
||||
* </pre>
|
||||
*
|
||||
* @author bphillip
|
||||
* @version 1
|
||||
*/
|
||||
@Transactional
|
||||
public class ValidatorImplWrapper implements Validator {
|
||||
|
||||
private ValidatorImpl validator;
|
||||
|
||||
public ValidatorImplWrapper() {
|
||||
|
||||
}
|
||||
|
||||
public ValidatorImplWrapper(ValidatorImpl validator) {
|
||||
this.validator = validator;
|
||||
}
|
||||
|
||||
@Override
|
||||
@WebMethod(action = "urn:oasis:names:tc:ebxml-regrep:wsdl:spi:bindings:4.0:Validator#validateObjects")
|
||||
@WebResult(name = "ValidateObjectsResponse", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:spi:4.0", partName = "partValidateObjectsResponse")
|
||||
public ValidateObjectsResponse validateObjects(
|
||||
@WebParam(name = "ValidateObjectsRequest", targetNamespace = "urn:oasis:names:tc:ebxml-regrep:xsd:spi:4.0", partName = "partValidateObjectsRequest") ValidateObjectsRequest partValidateObjectsRequest)
|
||||
throws MsgRegistryException {
|
||||
return validator.validateObjects(partValidateObjectsRequest);
|
||||
}
|
||||
|
||||
}
|
|
@ -9,23 +9,45 @@
|
|||
http://cxf.apache.org/schemas/jaxrs.xsd">
|
||||
|
||||
<import resource="file:///${edex.home}/conf/spring/edex-db.xml" />
|
||||
<import resource="classpath:res/spring/eventbus-common.xml" />
|
||||
<import resource="classpath:res/spring/eventbus-common.xml" />
|
||||
<import resource="classpath:res/spring/ebxml.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-webservices.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-validator-plugins.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-validator-plugins.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-querytypes.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-registry-dao.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-subscription.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-constants.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-thrift-client.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-xacml.xml" />
|
||||
<import resource="classpath:res/spring/ebxml-impl.xml"/>
|
||||
<import resource="classpath:res/spring/ebxml-impl.xml" />
|
||||
|
||||
<import resource="classpath:META-INF/cxf/cxf.xml" />
|
||||
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
|
||||
|
||||
<bean id="QueryServiceWrapper"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.services.query.QueryManagerImplWrapper">
|
||||
<constructor-arg name="queryManager" ref="queryServiceImpl" />
|
||||
</bean>
|
||||
<bean id="NotificationListenerServiceWrapper"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.services.notification.NotificationListenerImplWrapper">
|
||||
<constructor-arg name="notificationListener" ref="notificationServiceImpl" />
|
||||
</bean>
|
||||
<bean id="LifecycleManagerServiceWrapper"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.services.lifecycle.LifecycleManagerImplWrapper">
|
||||
<constructor-arg name="lifecycleManager" ref="lcmServiceImpl" />
|
||||
</bean>
|
||||
<bean id="ValidatorServiceWrapper"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.services.validator.ValidatorImplWrapper">
|
||||
<constructor-arg name="validator" ref="validatorServiceImpl" />
|
||||
</bean>
|
||||
<bean id="CatalogerServiceWrapper"
|
||||
class="com.raytheon.uf.edex.registry.ebxml.services.cataloger.CatalogerImplWrapper">
|
||||
<constructor-arg name="cataloger" ref="catalogerServiceImpl" />
|
||||
</bean>
|
||||
|
||||
<jaxws:server id="RegistryRequest"
|
||||
serviceClass="com.raytheon.uf.common.registry.IRegistryRequestService" address="/registryRequest">
|
||||
serviceClass="com.raytheon.uf.common.registry.IRegistryRequestService"
|
||||
address="/registryRequest">
|
||||
<jaxws:serviceBean>
|
||||
<ref bean="routeWrapper" />
|
||||
</jaxws:serviceBean>
|
||||
|
@ -34,25 +56,25 @@
|
|||
<!-- SOAP Service definitions -->
|
||||
<jaxws:server id="QueryService" address="/queryManager">
|
||||
<jaxws:serviceBean>
|
||||
<ref bean="queryServiceImpl" />
|
||||
<ref bean="QueryServiceWrapper" />
|
||||
</jaxws:serviceBean>
|
||||
</jaxws:server>
|
||||
|
||||
<jaxws:server id="NotificationListenerService" address="/notificationListener">
|
||||
<jaxws:serviceBean>
|
||||
<ref bean="notificationServiceImpl" />
|
||||
<ref bean="NotificationListenerServiceWrapper" />
|
||||
</jaxws:serviceBean>
|
||||
</jaxws:server>
|
||||
|
||||
<jaxws:server id="LifecycleManagerServiceService" address="/lifecycleManager">
|
||||
<jaxws:server id="LifecycleManagerService" address="/lifecycleManager">
|
||||
<jaxws:serviceBean>
|
||||
<ref bean="lcmServiceImpl" />
|
||||
<ref bean="LifecycleManagerServiceWrapper" />
|
||||
</jaxws:serviceBean>
|
||||
</jaxws:server>
|
||||
|
||||
<jaxws:server id="ValidatorService" address="/validator">
|
||||
<jaxws:serviceBean>
|
||||
<ref bean="validatorServiceImpl" />
|
||||
<ref bean="ValidatorServiceWrapper" />
|
||||
</jaxws:serviceBean>
|
||||
</jaxws:server>
|
||||
|
||||
|
@ -66,7 +88,7 @@
|
|||
<!-- REST Service Definitions -->
|
||||
<jaxrs:server id="registryRestServices" address="/">
|
||||
<jaxrs:serviceBeans>
|
||||
<ref bean="registryAvailabilityService"/>
|
||||
<ref bean="registryAvailabilityService" />
|
||||
<ref bean="registryObjectsRestService" />
|
||||
<ref bean="repositoryObjectsRestService" />
|
||||
<ref bean="queryProtocolRestService" />
|
||||
|
|
Loading…
Add table
Reference in a new issue