diff --git a/guice/common/src/main/java/com/peterphi/std/guice/restclient/resteasy/impl/ResteasyClientFactoryImpl.java b/guice/common/src/main/java/com/peterphi/std/guice/restclient/resteasy/impl/ResteasyClientFactoryImpl.java
index <HASH>..<HASH> 100644
--- a/guice/common/src/main/java/com/peterphi/std/guice/restclient/resteasy/impl/ResteasyClientFactoryImpl.java
+++ b/guice/common/src/main/java/com/peterphi/std/guice/restclient/resteasy/impl/ResteasyClientFactoryImpl.java
@@ -89,6 +89,10 @@ public class ResteasyClientFactoryImpl implements StoppableService
 	                                 final RemoteExceptionClientResponseFilter remoteExceptionClientResponseFilter,
 	                                 final JAXBContextResolver jaxbContextResolver)
 	{
+		// Make sure that if we're called multiple times (e.g. because of a guice CreationException failing startup after us) we start fresh
+		if (ResteasyProviderFactory.peekInstance() != null)
+			ResteasyProviderFactory.clearInstanceIfEqual(ResteasyProviderFactory.peekInstance());
+
 		this.resteasyProviderFactory = ResteasyProviderFactory.getInstance();
 		resteasyProviderFactory.registerProviderInstance(jaxbContextResolver);
Bugfix: in the event of a CreationException happening after resteasy client initialisation, we could duplicate provider registrations. This change makes sure that we start fresh every time