Is it the WAR or the EJB-ness that triggers that? IE, if I put the POJO's in the ejb-jar instead, would they honor the prefix, or would I also have to put an EJB annotation like @Singleton on them?
I remember finding somewhere a way to affect that mapping on a per ejb-jar basis. I'd need to set the mapping in such a way that it would overlap actual WAR files in some cases as there are a few places where other web stuff is mounted at /warurl/ and webservices are expected at /warurl/services/. Do you know if it would cause trouble for webservices in an ejb-jar deployment to claim part of what was otherwise claimed by a WAR? I'm trying to decide if it will be easier to treat them as EJB's and move them into ejb-jars or split them into their own WAR files and map those in application.xml accordingly. Thanks, Zac > On Jun 5, 2017, at 16:39, Romain Manni-Bucau <[email protected]> wrote: > > Hi Zachary, > > if you write a pojo webservice the mapping is taken from the web.xml > (define a servlet using the webservice class). Configuration you mention if > for EJB webservices only. > > > Romain Manni-Bucau > @rmannibucau > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftwitter.com%2Frmannibucau&data=01%7C01%7Czbedell%40nycourts.gov%7Ce4b947638f164f8d4c5c08d4ac5379b4%7C3456fe92cbd1406db5a35364bec0a833%7C1&sdata=bq%2FeKosy%2FvrD6DYHjxe%2FqhZX%2B5tnPusXjxTjrLE5YiA%3D&reserved=0> > | Blog > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fblog-rmannibucau.rhcloud.com&data=01%7C01%7Czbedell%40nycourts.gov%7Ce4b947638f164f8d4c5c08d4ac5379b4%7C3456fe92cbd1406db5a35364bec0a833%7C1&sdata=%2FRirXPXUXZ7iYFMXpv5JSMULFZAefc0Na9TX3ghX14U%3D&reserved=0> > | Old Blog > <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Frmannibucau.wordpress.com&data=01%7C01%7Czbedell%40nycourts.gov%7Ce4b947638f164f8d4c5c08d4ac5379b4%7C3456fe92cbd1406db5a35364bec0a833%7C1&sdata=fG%2FVf2NSwYWNMt%2Bu2GcTNn%2FLtkUn6wKDtK2WISKYFhk%3D&reserved=0> > | Github > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frmannibucau&data=01%7C01%7Czbedell%40nycourts.gov%7Ce4b947638f164f8d4c5c08d4ac5379b4%7C3456fe92cbd1406db5a35364bec0a833%7C1&sdata=iuZOsmkNIE%2BnAB6Zw%2BbvyNv5TpwcpR3OclzjUBSSmX4%3D&reserved=0> > | > LinkedIn > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Frmannibucau&data=01%7C01%7Czbedell%40nycourts.gov%7Ce4b947638f164f8d4c5c08d4ac5379b4%7C3456fe92cbd1406db5a35364bec0a833%7C1&sdata=BvUxtvHPc3QwNp3BfRVrJwLy0S3uByFlgkANs57kJtc%3D&reserved=0> > | JavaEE Factory > <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fjavaeefactory-rmannibucau.rhcloud.com&data=01%7C01%7Czbedell%40nycourts.gov%7Ce4b947638f164f8d4c5c08d4ac5379b4%7C3456fe92cbd1406db5a35364bec0a833%7C1&sdata=bBF6yqYbm8xH95%2B5AiyBwt9kEehn1dblaWa1vIEiEd4%3D&reserved=0> > > 2017-06-05 22:32 GMT+02:00 Zachary Bedell <[email protected]>: > >> Good afternoon, >> >> I'm using TomEE 7.0.3 with annotation based JAX-WS POJO webservices. It >> appears that the settings for both tomee.jaxws.subcontext and >> tomee.jaxws.oldsubcontext are ignored in my configuration. Webservices are >> always mapped to the root URL of the WAR that contains them, never with the >> default /webservices prefix nor with my desired value of /services as >> specified in tomee.jaxws.subcontext. >> >> Doing a bit of debugging at startup, it appears those system properties >> would be parsed in org.apache.tomee.webservices.TomcatWsRegistry in >> either the addWsContainer() or addServlet() methods. As my instance starts >> up, those two methods are never called (breakpoints never fire), and >> instead the setWsContainer() method is called as each WAR that contains >> JAX-RS POJO's is deployed. The stacktrace during initialization looks like >> below. The setWsContainer() method doesn't read either the >> tomee.jaxws.subcontext or tomee.jaxws.oldsubcontext methods. >> >> I *think* my annotations to setup the webservices are pretty straight >> forward. Interface & implementation class like: >> >> @WebService(targetNamespace=AuthorizedDeviceV1001.NAMESPACE) >> public interface AuthorizedDeviceV1001 { >> public static final String NAME = "AuthorizedDeviceV1001"; >> public static final String NAMESPACE = "http://X/xmltypes/authorized- >> device/V1001"; >> //... >> } >> >> @WebService( >> name = AuthorizedDeviceV1001.NAME, >> serviceName = AuthorizedDeviceV1001.NAME, >> targetNamespace = AuthorizedDeviceV1001.NAMESPACE, >> endpointInterface = "ucs.common.authorizeddev.ws. >> AuthorizedDeviceV1001" >> ) >> public class AuthorizedDeviceServiceV1001 implements AuthorizedDeviceV1001 >> { >> //... >> } >> >> These two class files are in a WAR inside an EAR, listed in the EAR's >> application.xml. I can't think of anything else out of the ordinary about >> the packaging or server configuration. I'm able to confirm the values of >> tomee.jaxws.subcontext and tomee.jaxws.oldsubcontext are both as expected >> by dumping out system properties once the server is up. The webservices >> all work fine once the server is up. They're just mounted at the wrong >> URL's. We're trying to maintain wire-compatibility with an existing JBoss >> server we're migrating from, so having these URL's change would complicate >> things a bit. >> >> Does anyone have any ideas what would cause the server initialization >> process to take this code path instead of the one that honors these two >> configuration properties? >> >> The stacktrace during deployment >> >> Daemon Thread [localhost-startStop-1] (Suspended (breakpoint at line 100 >> in TomcatWsRegistry)) >> owns: StandardContext (id=504) >> TomcatWsRegistry.setWsContainer(HttpListener, ClassLoader, >> String, String, ServletInfo, String, String, String, String) line: 100 >> CxfService(WsService).afterApplicationCreated(AppInfo, >> WebAppInfo) line: 436 >> TomeeJaxWsService.afterApplicationCreated(AfterApplicationCreated) >> line: 56 >> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: >> not available [native method] >> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62 >> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 >> Method.invoke(Object, Object...) line: 498 >> ObserverManager$MethodInvocation.invoke(Object) line: 406 >> ObserverManager$InvocationList.invoke(Object) line: 521 >> ObserverManager.doFire(E) line: 111 >> ObserverManager.fireEvent(E) line: 100 >> SystemInstance.fireEvent(E) line: 217 >> TomcatWebAppBuilder.afterStart(StandardContext) line: 1740 >> GlobalListenerSupport.lifecycleEvent(LifecycleEvent) line: 116 >> StandardContext(LifecycleBase).fireLifecycleEvent(String, Object) >> line: 94 >> StandardContext(LifecycleBase).setStateInternal(LifecycleState, >> Object, boolean) line: 395 >> StandardContext(LifecycleBase).start() line: 160 >> ContainerBase$StartChild.call() line: 1419 >> ContainerBase$StartChild.call() line: 1409 >> FutureTask<V>.run() line: 266 >> ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1142 >> ThreadPoolExecutor$Worker.run() line: 617 >> Thread.run() line: 748 >> >> >> Best regards, >> Zac Bedell >> >>
signature.asc
Description: Message signed with OpenPGP
