Я пишу небольшое приложение веб-службы Java EE 6, предназначенное для преобразования файлов форм ESRI и передачи данных в другое приложение.
У меня приложение работает нормально, как приложение командной строки.Однако во время переноса кода он начал генерировать исключение во время работы на сервере Glassfish.
Код проверяет, является ли тип координатной проекции допустимой проекцией для нашего унаследованного приложения и должен возвращатьлогическое значение:
/**
* Validates that the shape file is using one of the valid coordinate systems. Returns true if
* the coordinate system is valid.
*
* @param shpFilePath The path to the shape files.
* @return
*/
public boolean validCoordinateSystem(String shpFilePath) {
try {
ShpFiles shapeFiles = new ShpFiles(shpFilePath);
PrjFileReader fileReader = new PrjFileReader(shapeFiles);
CoordinateReferenceSystem coordSystem = fileReader.getCoodinateSystem();
for (int i = 0; i < this.acceptedCoordinateSystems.length; i++) {
if (this.acceptedCoordinateSystems[i].equalsIgnoreCase(coordSystem.getName().toString())) {
return true;
}
}
fileReader.close();
} catch (MalformedURLException ex) {
Logger.getLogger(GeoTools.class.getName()).log(Level.SEVERE, null, ex);
return false;
} catch (IOException ioe) {
Logger.getLogger(GeoTools.class.getName()).log(Level.SEVERE, null, ioe);
return false;
} catch (Exception nex){
Logger.getLogger(GeoTools.class.getName()).log(Level.SEVERE, null, nex);
return false;
}
return false;
}
Этот код нормально работает как приложение командной строки.Однако при запуске этого метода в glassfish я получаю следующую трассировку стека:
org.geotools.factory.FactoryNotFoundException: No factory of kind "MathTransformFactory" found.
at org.geotools.factory.FactoryRegistry.getServiceProvider(FactoryRegistry.java:374)
at org.geotools.factory.FactoryCreator.getServiceProvider(FactoryCreator.java:143)
at org.geotools.referencing.ReferencingFactoryFinder.getFactory(ReferencingFactoryFinder.java:193)
at org.geotools.referencing.ReferencingFactoryFinder.getMathTransformFactory(ReferencingFactoryFinder.java:503)
at org.geotools.referencing.factory.ReferencingObjectFactory.getMathTransformFactory(ReferencingObjectFactory.java:152)
at org.geotools.referencing.factory.ReferencingObjectFactory.createFromWKT(ReferencingObjectFactory.java:1084)
at org.geotools.data.shapefile.prj.PrjFileReader.<init>(PrjFileReader.java:78)
at com.spectrum.demeter.utils.GeoTools.validCoordinateSystem(GeoTools.java:61)
at com.spectrum.demeter.ejb.Converter.addSurveyToDatabase(Converter.java:117)
at com.spectrum.demeter.ws.SurveyManager.convertShpToDb(SurveyManager.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.glassfish.webservices.InstanceResolverImpl$1.invoke(InstanceResolverImpl.java:137)
Я проверяю, чтобы убедиться, что в проект добавлены все файлы geotools.jar, которые мне нужны, однако я не уверенчто является причиной этой ошибки и (хотя я думаю, что я мог ее пропустить) не может найти ничего в документах или API.
Любая помощь в решении этой проблемы была бы фантастической.
СпасибоГрант.