diff --git a/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java b/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java
index ac8ba3e65918dc0bc359ba8959fc56981219cfd4..f292f8099a3b1863e11899ee54e4e5759876b0bb 100755
--- a/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java
+++ b/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java
@@ -446,8 +446,7 @@ public class ForecastBean {
         Integer instancesCompleted = 0;
         for (VipsCoreInstance vipsCoreInstance : vipsCoreInstances) {
             LOGGER.debug("Attempting to connect to " + vipsCoreInstance.getUri());
-            try {
-                Client client = ClientBuilder.newClient();
+            try (Client client = ClientBuilder.newClient()){
                 WebTarget target = client.target(vipsCoreInstance.getUri());
                 ResteasyWebTarget rTarget = (ResteasyWebTarget) target;
                 ManagerResource resource = rTarget.proxy(ManagerResource.class);
@@ -759,11 +758,12 @@ public class ForecastBean {
      * @return
      */
     private ManagerResource getManagerResource(ModelInformation modelInformation) {
-        Client client = ClientBuilder.newClient();
-        WebTarget target = client.target(modelInformation.getVipsCoreInstanceId().getUri());
-        ResteasyWebTarget rTarget = (ResteasyWebTarget) target;
-        ManagerResource resource = rTarget.proxy(ManagerResource.class);
-        return resource;
+        try(Client client = ClientBuilder.newClient()){
+            WebTarget target = client.target(modelInformation.getVipsCoreInstanceId().getUri());
+            ResteasyWebTarget rTarget = (ResteasyWebTarget) target;
+            ManagerResource resource = rTarget.proxy(ManagerResource.class);
+            return resource;
+        }
     }
 
     public Kml getForecastsAggregateKml(List<Integer> organizationIds, List<Integer> cropOrganismIds, Date theDate,
diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationService.java b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
index 09f31ed6ec7594ce820482b1b121d09b9673aa93..41ff04066eeeb192ca26b043eb1c41040b6720c5 100755
--- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
@@ -925,52 +925,55 @@ public class ObservationService {
      * @return The list of observations, with the locations masked with the selected polygon service
      */
     private List<Observation> maskObservations(PolygonService polygonService, List<Observation> observations) {
-        //observations.forEach(o->System.out.println(o.getObservationId()));
-        Client client = ClientBuilder.newClient();
-        WebTarget target = client.target(polygonService.getGisSearchUrlTemplate());
-        List<ReferencedPoint> points = observations.stream()
-            .filter(obs -> (obs.getGeoinfos() != null && !obs.getGeoinfos().isEmpty()) || obs.getLocation() != null)
-            .map(obs -> {
-                ReferencedPoint rp = new ReferencedPoint();
-                rp.setId(String.valueOf(obs.getObservationId()));
-                if (obs.getGeoinfos() != null) {
-                    rp.setLon(obs.getGeoinfos().get(0).getGisGeom().getCoordinate().x);
-                    rp.setLat(obs.getGeoinfos().get(0).getGisGeom().getCoordinate().y);
-                } else {
-                    rp.setLon(obs.getLocation().getLongitude());
-                    rp.setLat(obs.getLocation().getLatitude());
-                }
-                return rp;
-            }).collect(Collectors.toList());
-        /*System.out.println("maskobservations - target.request() about to be called");
-        ObjectMapper oMapper = new ObjectMapper();
-        try {
-            System.out.println(oMapper.writeValueAsString(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON)));
-        } catch (JsonProcessingException ex) {
-            Logger.getLogger(ObservationService.class.getName()).log(Level.SEVERE, null, ex);
-        }*/
-        PointMappingResponse response = target.request(MediaType.APPLICATION_JSON)
-            .post(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON), PointMappingResponse.class);
-        // We need to loop through the observations and find corresponding featurecollections and replace those
-        Map<Integer, Feature> indexedPolygons = new HashMap<>();
-        for (Feature feature : response.getFeatureCollection().getFeatures()) {
-            indexedPolygons.put((Integer) feature.getProperties().get("id"), feature);
-        }
-        GISEntityUtil gisEntityUtil = new GISEntityUtil();
-        for (Map mapping : response.getMapping()) {
-            Integer observationId = Integer.valueOf((String) mapping.get("id"));
-            Integer borderId = (Integer) mapping.get("borderid");
-            observations.stream().filter((o) -> (o.getObservationId().equals(observationId))).forEachOrdered((o) -> {
-                Gis polygon = gisEntityUtil.getGisFromFeature(indexedPolygons.get(borderId));
-                List<Gis> gis = new ArrayList<>();
-                gis.add(polygon);
-                o.setGeoinfos(gis);
-                o.setLocation(null);
-                o.setLocationPointOfInterestId(null);
-            });
-        }
+        try(Client client = ClientBuilder.newClient())
+        {
+            //observations.forEach(o->System.out.println(o.getObservationId()));
+            
+            WebTarget target = client.target(polygonService.getGisSearchUrlTemplate());
+            List<ReferencedPoint> points = observations.stream()
+                .filter(obs -> (obs.getGeoinfos() != null && !obs.getGeoinfos().isEmpty()) || obs.getLocation() != null)
+                .map(obs -> {
+                    ReferencedPoint rp = new ReferencedPoint();
+                    rp.setId(String.valueOf(obs.getObservationId()));
+                    if (obs.getGeoinfos() != null) {
+                        rp.setLon(obs.getGeoinfos().get(0).getGisGeom().getCoordinate().x);
+                        rp.setLat(obs.getGeoinfos().get(0).getGisGeom().getCoordinate().y);
+                    } else {
+                        rp.setLon(obs.getLocation().getLongitude());
+                        rp.setLat(obs.getLocation().getLatitude());
+                    }
+                    return rp;
+                }).collect(Collectors.toList());
+            /*System.out.println("maskobservations - target.request() about to be called");
+            ObjectMapper oMapper = new ObjectMapper();
+            try {
+                System.out.println(oMapper.writeValueAsString(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON)));
+            } catch (JsonProcessingException ex) {
+                Logger.getLogger(ObservationService.class.getName()).log(Level.SEVERE, null, ex);
+            }*/
+            PointMappingResponse response = target.request(MediaType.APPLICATION_JSON)
+                .post(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON), PointMappingResponse.class);
+            // We need to loop through the observations and find corresponding featurecollections and replace those
+            Map<Integer, Feature> indexedPolygons = new HashMap<>();
+            for (Feature feature : response.getFeatureCollection().getFeatures()) {
+                indexedPolygons.put((Integer) feature.getProperties().get("id"), feature);
+            }
+            GISEntityUtil gisEntityUtil = new GISEntityUtil();
+            for (Map mapping : response.getMapping()) {
+                Integer observationId = Integer.valueOf((String) mapping.get("id"));
+                Integer borderId = (Integer) mapping.get("borderid");
+                observations.stream().filter((o) -> (o.getObservationId().equals(observationId))).forEachOrdered((o) -> {
+                    Gis polygon = gisEntityUtil.getGisFromFeature(indexedPolygons.get(borderId));
+                    List<Gis> gis = new ArrayList<>();
+                    gis.add(polygon);
+                    o.setGeoinfos(gis);
+                    o.setLocation(null);
+                    o.setLocationPointOfInterestId(null);
+                });
+            }
 
-        return observations;
+            return observations;
+        }
     }
 
     /**
diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java b/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java
index f92c6340fa819562bc4da6357f286a70eb2549de..ef6257888e06d98ba8a2c48c490e86429399d515 100644
--- a/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java
@@ -134,31 +134,32 @@ public class ObservationTimeSeriesService {
      * @return The observation time series, with location masked with the provided polygon service
      */
     private void maskLocation(PolygonService polygonService, ObservationTimeSeries observationTimeSeries) {
-        Client client = ClientBuilder.newClient();
-        WebTarget target = client.target(polygonService.getGisSearchUrlTemplate());
-        ReferencedPoint rp = new ReferencedPoint();
-        rp.setId(String.valueOf(observationTimeSeries.getObservationTimeSeriesId()));
-        rp.setLon(observationTimeSeries.getLocationPointOfInterest().getLongitude());
-        rp.setLat(observationTimeSeries.getLocationPointOfInterest().getLatitude());
+        try(Client client = ClientBuilder.newClient()){
+            WebTarget target = client.target(polygonService.getGisSearchUrlTemplate());
+            ReferencedPoint rp = new ReferencedPoint();
+            rp.setId(String.valueOf(observationTimeSeries.getObservationTimeSeriesId()));
+            rp.setLon(observationTimeSeries.getLocationPointOfInterest().getLongitude());
+            rp.setLat(observationTimeSeries.getLocationPointOfInterest().getLatitude());
 
-        ReferencedPoint[] pointArray = {rp};
-        PointMappingResponse response = target.request(MediaType.APPLICATION_JSON).post(Entity.entity(pointArray, MediaType.APPLICATION_JSON), PointMappingResponse.class);
-        // We need to loop through the observations and find corresponding featurecollections and replace those
-        Map<Integer, Feature> indexedPolygons = new HashMap<>();
-        for (Feature feature : response.getFeatureCollection().getFeatures()) {
-            indexedPolygons.put((Integer) feature.getProperties().get("id"), feature);
-        }
-        GISEntityUtil gisEntityUtil = new GISEntityUtil();
-        for (Map mapping : response.getMapping()) {
-            Integer observationTimeSeriesId = Integer.valueOf((String) mapping.get("id"));
-            if (observationTimeSeries.getObservationTimeSeriesId().equals(observationTimeSeriesId)) {
-                Integer borderId = (Integer) mapping.get("borderid");
-                Gis polygon = gisEntityUtil.getGisFromFeature(indexedPolygons.get(borderId));
-                List<Gis> gis = new ArrayList<>();
-                gis.add(polygon);
-                observationTimeSeries.setGeoInfoList(gis);
-                observationTimeSeries.setLocationPointOfInterest(null);
-                observationTimeSeries.setLocationPointOfInterestId(null);
+            ReferencedPoint[] pointArray = {rp};
+            PointMappingResponse response = target.request(MediaType.APPLICATION_JSON).post(Entity.entity(pointArray, MediaType.APPLICATION_JSON), PointMappingResponse.class);
+            // We need to loop through the observations and find corresponding featurecollections and replace those
+            Map<Integer, Feature> indexedPolygons = new HashMap<>();
+            for (Feature feature : response.getFeatureCollection().getFeatures()) {
+                indexedPolygons.put((Integer) feature.getProperties().get("id"), feature);
+            }
+            GISEntityUtil gisEntityUtil = new GISEntityUtil();
+            for (Map mapping : response.getMapping()) {
+                Integer observationTimeSeriesId = Integer.valueOf((String) mapping.get("id"));
+                if (observationTimeSeries.getObservationTimeSeriesId().equals(observationTimeSeriesId)) {
+                    Integer borderId = (Integer) mapping.get("borderid");
+                    Gis polygon = gisEntityUtil.getGisFromFeature(indexedPolygons.get(borderId));
+                    List<Gis> gis = new ArrayList<>();
+                    gis.add(polygon);
+                    observationTimeSeries.setGeoInfoList(gis);
+                    observationTimeSeries.setLocationPointOfInterest(null);
+                    observationTimeSeries.setLocationPointOfInterestId(null);
+                }
             }
         }
     }
diff --git a/src/test/java/no/nibio/vips/logic/entity/rest/PointMappingRequestTest.java b/src/test/java/no/nibio/vips/logic/entity/rest/PointMappingRequestTest.java
index d0ea65c47482c1029673bc6abdfb4deb04b87292..5b62e2df13454958f59fc682ee9156a0bb0818d2 100644
--- a/src/test/java/no/nibio/vips/logic/entity/rest/PointMappingRequestTest.java
+++ b/src/test/java/no/nibio/vips/logic/entity/rest/PointMappingRequestTest.java
@@ -102,16 +102,16 @@ public class PointMappingRequestTest {
         
         ReferencedPoint[] instance = points.toArray(new ReferencedPoint[points.size()]);
         
-        Client client = ClientBuilder.newClient();
-        WebTarget target = client.target("https://proxy1.nibio.no/municipality_cache_ws/pointmapping/1/4326");
+        try(Client client = ClientBuilder.newClient()) {
+            WebTarget target = client.target("https://proxy1.nibio.no/municipality_cache_ws/pointmapping/1/4326");
 
-        //PointMappingResponse response = 
-        PointMappingResponse response =    target.request(MediaType.APPLICATION_JSON)
-                .post(Entity.entity(instance, MediaType.APPLICATION_JSON), PointMappingResponse.class);//.toString();
-        client.close();
-        //System.out.println(((Polygon)response.getFeatureCollection().getFeatures()[0].getGeometry()).getCoordinates()[0].length);
-        
-        assertNotNull(response);
+            //PointMappingResponse response = 
+            PointMappingResponse response =    target.request(MediaType.APPLICATION_JSON)
+                    .post(Entity.entity(instance, MediaType.APPLICATION_JSON), PointMappingResponse.class);//.toString();
+            //System.out.println(((Polygon)response.getFeatureCollection().getFeatures()[0].getGeometry()).getCoordinates()[0].length);
+            
+            assertNotNull(response);
+        }
         //System.out.println(Entity.entity(instance, MediaType.APPLICATION_JSON));
         
         //System.out.println(target.request(MediaType.APPLICATION_JSON)