16 Ağustos 2012 Perşembe

Servlet Web Service Endpoint '' Failure

Java ile web servis geliştirirken basit tipleri ve sınıfları kullanırken çok fazla problem yaşanmaz fakat kendi oluşurduğumuz sınıfları kullanmak istersek bir takım sorunlar yaşayabiliyoruz. Karşılaştığım  ve sebebini gerçekten çok zor bulabildiğim bir problemin çözümünden bahsedeceğim şimdi.

JAX-WS web servis oluştururken, daha önce başka bir projemde oluşturduğum bir sınıfı web servis metodunun dönüş nesnesi olarak belirledim. Fakat bu metodu yazıp projeyi derlemeye ya da çalıştırmaya çalıştığımda aşağıdaki hatayı aldım:

Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: Servlet web service endpoint '' failure. Please see server.log for more details.
/.../nbproject/build-impl.xml:725: The module has not been deployed.
See the server log for details.

Hata da çok fazla bir detay yok, derinlemesine koda girmem gerekti. Söylediğim gibi web servisler xml tabanlı olduğu için uğraştığınız sınıflarda herşeyin tanımlı olması lazım. Benim metodumda dönen sınıfın default constructor'ı tanımlanmamıştı. Bunu fark ettiğimde hemen bir cosntructor tanımlayıp denedim ve web servisin çalıştığını gördüm. Yani sorun, dönmek istediğim sınıfta default constructor olmamasıydı. Benim sınıfımda public olan başka hiç constructor yoktu dolayısıyla belki parametreli public constructor tanımlayarak da aynı şekilde çözüme gidilebilir.

( java, web servis, jax-ws, default constructor, illegalstateexception, lifecycleexception, endpoint, build-impl.xml )