2016-03-23 20 views
-1

Bir Java Web Projesi'nde, bir web sayfasından gelen değerleri kullanarak bir XML etiketi değerini güncellemek için bir Servlet kullanıyoruz ve daha sonra yürütmek için bu güncellenmiş etiket değerini XML ve devam, ancak eski değeri (güncelleme öncesi) ve devam ediyor.Servlet XML'den güncellenen değeri alınamıyor

public void setPeriodID(String bookingsBOPeriodID) throws InterruptedException { 

          try{ 
              final String FilePath=UtilLib.getEnvVar("ConfigXMLFilePath"); 
          String filepath = FilePath; 
          String bwperiodid=" and "; 
          DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
          DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
          Document doc = docBuilder.parse(filepath); 

          // Get the staff element by tag name directly 
          Node Parameters = doc.getElementsByTagName("Parameters").item(0); 
          // loop the staff child node 
                  NodeList list = Parameters.getChildNodes(); 
                  for (int i = 0; i < list.getLength(); i++) {  
               Node node = list.item(i); 
          //BookingsBO 
          if (bookingsBOPeriodID!=null && bookingsBOPeriodID.length()!=0 && "BookingsBOINPeriodId".equals(node.getNodeName()) && bookingsBOPeriodID.indexOf(bwperiodid)==-1 ){ 
              System.out.println("***** Updating Bookings BO IN Period id ********"); 
              System.out.println("inside updateEnvPeriodID::"+bookingsBOPeriodID); 
              node.setTextContent(bookingsBOPeriodID); 
              // node.setNodeValue(bookingsBOPeriodID); 
          } 
       } 
                  // write the content into xml file 
                  TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
                  Transformer transformer = transformerFactory.newTransformer(); 
                  DOMSource source = new DOMSource(doc); 
                  StreamResult result = new StreamResult(new File(filepath)); 
                  transformer.transform(source, result); 
                  System.out.println("******* Period Id details updated **************");       
          } catch (ParserConfigurationException pce) { 
          pce.printStackTrace(); 
       } catch (TransformerException tfe) { 
          tfe.printStackTrace(); 
       } catch (IOException ioe) { 
          ioe.printStackTrace(); 
       } catch (SAXException sae) { 
          sae.printStackTrace(); 
       } 
          System.out.println("in period id after update :"+ UtilLib.getParam("BookingsBOINPeriodId")); 
} 

Webinterface'den yeni bir değer "bookingsBOPeriodID" içinden geçirilir. Bu yöntemden hemen sonra, yeni değer XML'de yansıtmayan

+0

Projenizi temizleyin ve sunucunuzu yeniden başlatın –

+0

@Khan: Bunun da yardımcı olmadığını denedik. Akış, @ XML'i Güncelle gibidir, bir işlemi gerçekleştirmek için değerleri alır. Bir sunucuda manuel olarak çalıştırdığımız zaman gayet iyi çalışıyor ancak Web arayüzünden aynısını çalıştırmaya çalıştığımız zaman değil. –

+1

Kodunuzu yükseltebilir misiniz? –

cevap

1

Xml'den verileri okumadan önce kodunuzun bir süre beklemesini sağlayın. Kaynaklarınız ve süreçleriniz bu gibi etkinliklerle senkronize edilmelidir.