веб-приложение: сохраните txt-файл на общем сервере Windows с веб-сервера linux - PullRequest
0 голосов
/ 16 июля 2010

У меня есть класс Java, который я использую для создания текстового файла из веб-приложения.Я использую следующий код:

private void CreatePaymentFile(String QueryCriteria) {
BigDecimal TotalPay;
DecimalFormat df2 = new DecimalFormat("00000");
String RecordString = null;
try{
String fileName = "\\\\fileandprint\\Apps\\Jury\\SHARE\\Payment_" + shortdateToday + SeqID + "24400.txt";
File f = new File(fileName);
FileOutputStream fop = new FileOutputStream(f);
SetPaymentFileName("Payment_" + shortdateToday + SeqID + "24400.txt");
FileWriter PaymentStream = new FileWriter(fileName,true);
BufferedWriter out = new BufferedWriter(PaymentStream);

// TODO Auto-generated method stub
String RecordStringFormat = "%-220s%-3s%-4s%-3s%-5s%-5s%-5s%-5s%-30s%-287s%-10s%-150s%-1s%-30s%-1s%-80s%-10s%-6s%-6s%-10s%-20s%-5s%-12s%-43s%-2s%-10s%-70s%-3s%-1s%-1s%-10s%-4s%-6s%-10s%-10s%-5s%27s";
JurorPayDetails JurorpayDetails = new JurorPayDetails();
ArrayList<JurorPayDetails.JurorPayDetailsTable> JurorPayDetailsObjList = new ArrayList<JurorPayDetails.JurorPayDetailsTable>();
JurorpayDetails.setJurorPayDetailsSql("Select P.*, GroupAssignment, TermDateServed, LastName, FirstName, Street1, Street2, City, State, ZipCode, Mileage, PublicEmployee, PayTime, PayMiles from PayDetails P INNER JOIN Jurors J ON P.JurorID = J.JurorID INNER JOIN Address A ON J.JurorID = A.JurorID where AddressType = 'M' and J.TermDateServed IN (" + QueryCriteria +") ORDER BY GroupAssignment, LastName");
boolean indicator = JurorpayDetails.setListOfJurorPayDetails();

if (indicator == true)
{
int size = JurorpayDetails.getListSize();
JurorPayDetailsObjList = JurorpayDetails.getJurorPayDetailsList();
for (int i=0; i<size; ++i){
JurorPayDetails.JurorPayDetailsTable eachPayable = JurorPayDetails.JurorPayDetailsTable)JurorPayDetailsObjList.get(i);
TotalPay = eachPayable.HoursAmount.add(eachPayable.MilesAmount);
RecordString = String.format(RecordStringFormat, ((eachPayable.Street1.trim() + " " + eachPayable.Street2.trim()).trim()), "1","B","1","WFB10","00000","21801","21801",eachPayable.City,"",longdateToday,"", "N", "21801_" + eachPayable.JurorID,"N",((eachPayable.FirstName.trim() + " " + eachPayable.LastName.trim()).trim()),"",    "PYMTLD","0",longdateToday,"21801" + shortdateToday + SeqID,df2.format(i + 1),eachPayable.Zipcode,"","RE","0","","CHK","N", "Y",longdateToday,"PYMT",eachPayable.State, "","001","01200",Paymentdf.format(TotalPay));
out.append(RecordString);
out.newLine();
}
out.close();
}
}catch (Exception e) {
System.err.println("error: " + e.getMessage());
}
}

Ничего особенного, запустите запрос, получите результаты и запишите их в фиксированном формате в файл и сохраните его на одном из наших серверов Windows.

Это прекрасно работает при локальном запуске, однако, когда мы помещаем приложение на веб-сервер Linux (и меняем настройки на Linux), файлы не сохраняются в правильном сетевом расположении.

Я попытался использовать обозначение файлов Windows и обозначение файлов Linux: \\ fileandprint \ Apps \ Jury \ SHARE \ и // fileandprint / Apps / Jury / SHARE /

, и да, местоположение файла, как я уже сказал, существуетпри локальном запуске в разработке он работает, только когда он установлен на Linux, он не хранит файлы правильно.

Есть предложения?

1 Ответ

0 голосов
/ 16 июля 2010

вам нужно явно смонтировать сетевой ресурс в локальный каталог.Пожалуйста, смотрите http://linuxwiki.de/smbmount для объяснения того, как это сделать.

Прямой доступ к общему сетевому ресурсу работает в файловых менеджерах Gnome и KDE, потому что они сами применяют магию.На уровне операционной системы эти пути не существуют.

Если это не решает проблему, приложите вывод исключения.Вы можете изменить

System.err.println("error: " + e.getMessage());

на

err.printStackTrace();

Это будет включать имя исключения и трассировку стека в дополнение к сообщению.Это особенно полезно, потому что сообщение может быть нулевым, и вы можете легко увидеть, в какой строке вашего кода произошло исключение.

...