Glassfish не может найти мой wsdl при развертывании WAR - PullRequest
3 голосов
/ 20 января 2010

У меня есть служба сервиса CXF, которую я сначала создал WSDL, и при развертывании WAR на сервере приложений glassfish 2.1.1 я получаю следующее исключение:

java.io.FileNotFoundException: C:\Sun\AppServer\domains\domain1\config\TestService.wsdl

Если я помещу WSDL в это место, все будет нормально. Как настроить WAR-файл таким образом, чтобы TestService.wsdl помещался в папку конфигурации?

Спасибо!

ОБНОВЛЕНИЕ: У меня все еще проблемы с развертыванием этой службы на Glassfish. Как он развертывается и отлично работает в Tomcat.

Я установил свойство -wsdlLocation во время сборки на «WEB-INF / wsdl / TestService.wsdl», но теперь, когда я разворачиваю приложение в Glassifish, я получаю следующие исключения в server.log

[#|2010-02-01T10:47:06.164-0500|SEVERE|sun-        
appserver2.1|javax.enterprise.system.tools.deployment|_ThreadID=23;_ThreadName=Thread-  
501;_RequestID=d3a3f49b-9329-477d-b6fc-24e0f4e4f3fa;|wsdl file 
file:/C:/development/wexlink/FileUploadService/wsdl/FileUploadService.wsdl does not 
exist for web service FileUploadService|#]

[#|2010-02-01T10:47:06.977-0500|SEVERE|sun     
appserver2.1|javax.enterprise.system.tools.deployment|_ThreadID=23;_ThreadName=Thread-  
501;_RequestID=d3a3f49b-9329-477d-b6fc-24e0f4e4f3fa;|Exception occured in J2EEC 
Phasejava.lang.RuntimeException: wsdl file 
file:/C:/development/wexlink/FileUploadService/wsdl/FileUploadService.wsdl does not 
exist for web service FileUploadService
com.sun.enterprise.deployment.backend.IASDeploymentException: Error loading deployment   
descriptors for module [FileUploadService] -- wsdl file 
file:/C:/development/wexlink/FileUploadService/wsdl/FileUploadService.wsdl does not 
exist for web service FileUploadService
    at   com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:406)
    at com.sun.enterprise.deployment.backend.ModuleDeployer.loadDescriptors(ModuleDeployer.java:426)
    at com.sun.enterprise.deployment.backend.WebModuleDeployer.deploy(WebModuleDeployer.java:160)
    at com.sun.enterprise.deployment.backend.ModuleDeployer.doRequestFinish(ModuleDeployer.java:182)
at com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:208)
at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966)
at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:283)
at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:835)
at com.sun.enterprise.management.deploy.DeployThread.deploy(DeployThread.java:187)
at com.sun.enterprise.management.deploy.DeployThread.run(DeployThread.java:225)

Причина: java.lang.RuntimeException: файл wsdl: / C: /development/wexlink/FileUploadService/wsdl/FileUploadService.wsdl не существует для веб-службы FileUploadService в com.sun.enterprise.deployment.util.ModuleContentValidator.accept (ModuleContentValidator.java:187) в com.sun.enterprise.deployment.WebBundleDescriptor.visit (WebBundleDescriptor.java:1410) на com.sun.enterprise.deployment.archivist.WebArchivist.postOpen (WebArchivist.java:171) на com.sun.enterprise.deployment.archivist.Archivist.open (Archivist.java:215) в com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive (ApplicationArchivist.java:813) в com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive (ApplicationArchivist.java:794) на com.sun.enterprise.deployment.backend.Deployer.loadDescriptors (Deployer.java:365) ... еще 10 | #]

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010

Если вы поместите файл WSDL в WEB-INF / wsdl / TestService.wsdl

Ваш код должен быть

@ WebService (wsdlLocation = "TestService.wsdl")

Также у вас есть что-то в логах, которые заявляют

файл: / C: /development/wexlink/FileUploadService/wsdl/FileUploadService.wsdl не существует для веб-службы FileUploadService

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

2 голосов
/ 20 января 2010

Обычно вы бы поместили его в WEB-INF где-нибудь. Затем, когда вы генерируете код с помощью wsdl2java или плагина maven, вы передаете флаг -wsdlLocation с WEB-INF / TestService.wsdl или подобным, чтобы get генерировался в коде.

Тем не менее, с помощью CXF, в вашей конфигурации jaxws: endpoint вы можете переопределить wsdlLocation с атрибутом на jaxws: endpoint, чтобы указать что-то вроде "WEB-INF / TestService.wsdl".

...