Multiple published services all reference the first exported spring web service
--------------------------------------------------------------------------------
Key: CXF-1746
URL: https://issues.apache.org/jira/browse/CXF-1746
Project: CXF
Issue Type: Bug
Components: Configuration
Affects Versions: 2.1.1
Environment: Mac OSX, 10.5.4, JDK 1.6.0_5, Spring 2.5.5, CXF 2.1.1
Reporter: Bjorn Harvold
Hi,
I've been working with CXF since the incubator stage. Before that I was an
xfire user. My multiple web services have been successfully published on
earlier version of CXF. I THINK this issue is associated with v2.1.1.
Here are my services configured in spring:
<!-- ============================== WEB SERVICE END
POINT============================== -->
<jaxws:endpoint id="cxf_UserWebService"
implementor="#userWebService"
address="/UserWebService">
<jaxws:serviceFactory>
<ref bean="serviceFactory"/>
</jaxws:serviceFactory>
</jaxws:endpoint>
<jaxws:endpoint id="cxf_ReferenceDataWebService"
implementor="#referenceDataWebService"
address="/ReferenceDataWebService">
<jaxws:serviceFactory>
<ref bean="serviceFactory"/>
</jaxws:serviceFactory>
</jaxws:endpoint>
<!-- ============================== WEB SERVICE END
POINT============================== -->
<!-- ============================== WEB SERVICE
============================== -->
<bean id="userWebService"
class="com.hxcel.globalhealth.web.ws.impl.UserWebServiceImpl"
parent="abstractWebService">
<property name="resourceBundle" value="errors"/>
<property name="description" value="${application.user.description}"/>
<property name="name" value="${application.user.name}"/>
<property name="shortName" value="${application.user.name.short}"/>
</bean>
<bean id="referenceDataWebService"
class="com.hxcel.globalhealth.web.ws.impl.ReferenceDataWebServiceImpl"
parent="abstractWebService">
<property name="description" value="${application.phr.description}"/>
<property name="name" value="${application.referencedata.name}"/>
<property name="shortName"
value="${application.referencedata.name.short}"/>
</bean>
<!-- ============================== WEB SERVICE
============================== -->
Here are the interfaces:
@WebService
public interface UserWebService extends ExternalApplication {
@WebMethod
@WebResult(name = "User")
UserDto getUser(@WebParam(name="id") String id) throws Fault;
@WebMethod
UserDto saveNewUser(@WebParam(name = "dto")UserDto dto) throws Fault;
@WebMethod
@WebResult(name = "isUsernameTaken")
Boolean isUsernameTaken(@WebParam(name="username") String username) throws
Fault;
@WebMethod
@WebResult(name = "isUserUnique")
Boolean isUserUnique(@WebParam(name = "id") String id,
@WebParam(name="username") String username) throws Fault;
@WebMethod
@WebResult(name = "User")
UserDto login(@WebParam(name = "username") String username,
@WebParam(name="password") String password) throws Fault;
}
@WebService
public interface ReferenceDataWebService extends ExternalApplication {
@WebMethod
@WebResult(name = "AdvanceDirectiveType")
AdvanceDirectiveTypeCd[] getAdvanceDirectiveTypes();
@WebMethod
@WebResult(name = "AllergyReactionType")
AllergyReactionTypeCd[] getAllergyReactionTypes();
@WebMethod
@WebResult(name = "AllergyType")
AllergyTypeCd[] getAllergyTypes();
@WebMethod
@WebResult(name = "AlternativeTreatmentType")
AlternativeTreatmentTypeCd[] getAlternativeTreatmentTypes();
@WebMethod
@WebResult(name = "BloodType")
BloodTypeCd[] getBloodTypes();
@WebMethod
@WebResult(name = "CaseStatus")
EmrStatusCd[] getEmrStatuses();
@WebMethod
@WebResult(name = "ClientStatus")
ClientStatusCd[] getClientStatuses();
@WebMethod
@WebResult(name = "ContactType")
ContactTypeCd[] getContactTypes();
@WebMethod
@WebResult(name = "Country")
CountryCd.code[] getCountries() throws Fault;
@WebMethod
@WebResult(name = "Country")
CountryCd getCountry(String code) throws Fault;
@WebMethod
@WebResult(name = "CreditcardType")
CreditcardTypeCd[] getCreditcardTypes();
@WebMethod
@WebResult(name = "DentalExamReasonType")
DentalExamReasonTypeCd[] getDentalExamReasonTypes();
@WebMethod
@WebResult(name = "DiagnoserType")
DiagnoserTypeCd[] getDiagnoserTypes();
@WebMethod
@WebResult(name = "EmailType")
EmailTypeCd[] getEmailTypes();
@WebMethod
@WebResult(name = "FrequencyType")
FrequencyTypeCd[] getFrequencyTypes();
@WebMethod
@WebResult(name = "InstantMessageType")
InstantMessageTypeCd[] getInstantMessageTypes();
@WebMethod
@WebResult(name = "ImmunizationType")
ImmunizationTypeCd[] getImmunizationTypes();
@WebMethod
@WebResult(name = "Language")
LanguageCd[] getLanguages();
@WebMethod
@WebResult(name = "LocationType")
LocationTypeCd[] getLocationTypes();
@WebMethod
@WebResult(name = "MaritalStatus")
MaritalStatusCd[] getMaritalStatuses();
@WebMethod
@WebResult(name = "MedicalConditionType")
MedicalConditionTypeCd[] getMedicalConditionTypes();
@WebMethod
@WebResult(name = "MedicationFrequencie")
MedicationFrequencyCd[] getMedicationFrequencies();
@WebMethod
@WebResult(name = "MedicationType")
MedicationTypeCd[] getMedicationTypes();
@WebMethod
@WebResult(name = "NewsChannel")
NewsChannelCd[] getNewsChannels();
@WebMethod
@WebResult(name = "PhoneType")
PhoneTypeCd[] getPhoneTypes();
@WebMethod
@WebResult(name = "ProfessionalClientStatus")
RelationshipStatusCd[] getRelationshipStatuses();
@WebMethod
@WebResult(name = "ProfessionalStatus")
ProfessionalStatusCd[] getProfessionalStatuses();
@WebMethod
@WebResult(name = "ProfessionalType")
ProfessionalTypeCd[] getProfessionalTypes();
@WebMethod
@WebResult(name = "WaitinglistPriority")
WaitinglistPriorityCd[] getWaitinglistPriorities();
@WebMethod
@WebResult(name = "Profession")
ProfessionCd[] getProfessions();
@WebMethod
@WebResult(name = "Race")
RaceCd[] getRaces();
@WebMethod
@WebResult(name = "RatingType")
RatingTypeCd[] getRatingTypes();
@WebMethod
@WebResult(name = "RecordType")
RecordTypeCd[] getRecordTypes();
@WebMethod
@WebResult(name = "RelativeConditionType")
RelativeConditionTypeCd[] getRelativeConditionTypes();
@WebMethod
@WebResult(name = "RelativeType")
RelativeTypeCd[] getRelativeTypes();
@WebMethod
@WebResult(name = "Religion")
ReligionCd[] getReligions();
@WebMethod
@WebResult(name = "Salutation")
SalutationCd[] getSalutations();
@WebMethod
@WebResult(name = "Sex")
SexCd[] getSexes();
@WebMethod
@WebResult(name = "SpecialtyType")
SpecialtyTypeCd[] getSpecialtyTypes();
@WebMethod
@WebResult(name = "SurgeryType")
SurgeryTypeCd[] getSurgeryTypes();
@WebMethod
@WebResult(name = "TreatmentType")
TreatmentTypeCd[] getTreatmentTypes();
@WebMethod
@WebResult(name = "UserStatus")
UserStatusCd[] getUserStatuses();
@WebMethod
@WebResult(name = "VisionExamReasonType")
VisionExamReasonTypeCd[] getVisionExamReasonTypes();
@WebMethod
@WebResult(name = "VisionNonPrescriptionGlassesType")
VisionNonPrescriptionGlassesTypeCd[] getVisionNonPrescriptionGlassesTypes();
@WebMethod
@WebResult(name = "VisionPrescriptionGlassesType")
VisionPrescriptionGlassesTypeCd[] getVisionPrescriptionGlassesTypes();
@WebMethod
@WebResult(name = "VisionContactLensType")
VisionContactLensTypeCd[] getVisionContactLensTypes();
}
They are very different interfaces. Here are the beginnings of the
implementations:
@WebService(serviceName = "UserWebService", endpointInterface =
"com.hxcel.globalhealth.web.ws.UserWebService")
public class UserWebServiceImpl extends AbstractWebService implements
UserWebService {}
@WebService(serviceName = "ReferenceDataWebService", endpointInterface =
"com.hxcel.globalhealth.web.ws.ReferenceDataWebService")
public class ReferenceDataWebServiceImpl extends AbstractWebService implements
ReferenceDataWebService {}
These services have worked fine before as I said on CXF v2.0.x.... maybe even
2.1.0.
When I start up the application and look at my available services I get this:
Available services:
UserWebService
* isUserUnique
* saveNewUser
* isUsernameTaken
* getUser
* login
Endpoint address: http://localhost:8080/services/UserWebService
Wsdl: {http://impl.ws.web.globalhealth.hxcel.com/}UserWebService
Target namespace: http://impl.ws.web.globalhealth.hxcel.com/
UserWebService
* isUserUnique
* saveNewUser
* isUsernameTaken
* getUser
* login
Endpoint address: http://localhost:8080/services/ReferenceDataWebService
Wsdl: {http://impl.ws.web.globalhealth.hxcel.com/}UserWebService
Target namespace: http://impl.ws.web.globalhealth.hxcel.com/
The web service I export first will always override all the other web services
I have.
Is this a bug or am I smoking the wrong end of the pipe again!?
Cheers
bjorn
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.