Well maybe not quite so obvious. I found the problem, or at least the problem points.
The secret's in the webservices.xml file, which is specified through JSR-109. For a really good general description of all the file mappings from WSDL through webservices.xml and jaxrpcmapping.xml file and finally back to the web.xml file, take a look at:
http://www-128.ibm.com/developerworks/library/ws-jsrart/ In this article, they literally point at the mappings required to make it all work. In my case the two key elements were in the <port-component> section of the webservices.xml file:
<service-endpoint-interface>itso.bean.WeatherForecast</service-endpoint-interface>
<service-impl-bean id="ServiceImplBean_1071529026058">
<servlet-link>itso_bean_WeatherForecast</servlet-link>
</service-impl-bean>
and the <servlet-link> element refers to a section of the web.xml file, which in this case looks like:
<servlet>
<servlet-name>itso_bean_WeatherForecast</servlet-name>
<servlet-class>itso.bean.WeatherForecast</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
Refocusing, note that the <service-endpoint-interface> points to a class (itso.bean.WeatherForecast), and that this will resolve to the <servlet-class> class itso.bean.WeatherForecast (whoa, dude, that doesn't sound right!). Two problems here: 1) These two references point to the same class, and, more importantly, 2) what's supposed to be pointing to an interface is actually pointing to a class.
Apparently the <service-endpoint-interface> needs to point to an interface, so building a Web Service from a class instead of an interface (as instructed on p. 253 of the Redbook "Select the WeatherForecast class...") is 1) wrong and 2) the only way the wizard will let you do it.
In my book, that's a bug. Easily solved, though... Build the Web Service as described, then change the class to an interface of the same name, and paste the implementation into a new class in the same package. Fix the web.xml <servlet-class> so that it loads your new implementation class instead of the interface and VOILA! your problem is solved.
Simple, no? NO.
At least now I'm in better control of JSR-109.
Thanks.
Doug Hoople
MCSD.NET, MCDBA, MCSE, MCT, SCJP1.4
[ January 19, 2005: Message edited by: Doug Hoople ]