WebSphere(8)からJboss(EAP 6.3)への既存のWebサービスエンドポイントを変換しています。 エンドポイントがEJB3 beanとして作成され、次のようになります。 package com.company.project.ridethecar.ejb;EJB3ベースのWebサービスエンドポイントが実際のBean名で生成されました
@WebService(
endpointInterface ="com.company.schemas.project.srm.ridethecarservice.soap_service.v1.RideTheCarSer vicePortType",
targetNamespace ="http://schemas.company.com/project/srm/ridethecarservice/soap-service/v1",
serviceName = "RideTheCarService",
portName = "RideTheCarServiceSoap",
wsdlLocation = "META-INF/wsdl/RideTheCarService/v2.00/RideTheCarService.wsdl")
@Stateless(name="RideTheCarBean")
@Local({com.company.schemas.project.srm.ridethecarservice.soap_service.v1.RideTheCarServicePortType.class})
@Interceptors(SpringBeanAutowiringInterceptor.class)
@Service
@HandlerChain(file="/RideTheCar-handler-chain.xml")
public class RideTheCarBean implements RideTheCarServicePortType
{...}
私はまた、WebServiceに対して定義されたWSDLを持っていると私は、Java Beanを生成するために、CXFのmaven CXF-コード生成・プラグイン(バージョン3.1.7)を使用しています。私RideTheCarServicePortTypeは次のように生成されます。
@WebService(targetNamespace = "http://schemas.company.com/project/srm/ridethecarservice/soap-service/v1", name = "RideTheCarServicePortType")
@XmlSeeAlso({com.comapny.schemas.project.messaging.v1.ObjectFactory.class, com.company.schemas.project.srm.ridethecarservice.service.v1.ObjectFactory.class })
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface RideTheCarServicePortType {
@WebMethod(action = "http://schemas.company.com/project/srm/ridethecarservice/soap-service/v1/EnvRideTheCarService")
@Action(input = "http://schemas.company.com/project/srm/ridethecarservice/soap-service/v1/RideValidationRq", output = "http://schemas.company.com/project/srm/ridethecarservice/soap-service/v1/RideValidationRs")
@WebResult(name = "PbaValidationRs", targetNamespace = "http://schemas.company.com/project/srm/ridethecarservice/service/v1", partName = "RideValidationRs")
public com.company.schemas.project.srm.ridethecarservice.service.v1.RideValidationRs rideValidation(
@WebParam(partName = "RideValidationRq", name = "RideValidationRq", targetNamespace = "http://schemas.company.com/project/srm/ridethecarservice/service/v1")
com.company.schemas.project.srm.ridethecarservice.service.v1.RideValidationRq rideValidationRq
);
}
私は、WARファイルとしてすべてのコードをパッケージMavenを使用して のJBossにデプロイしています。 JBossはEJBやWebサービスを識別することが可能であるが、残念ながらそれは自動的に
http://localhost:8080/root/RideTheCarService/RideTheCarBean?WSDLなどのエンドポイントを作成します。 私はhttp://localhost:8080/root/RideTheCarService?wsdlをRideTheCarBeanの部分なしで見ることができます。これはWebSphereのように機能していたためです。
なぜJbossが@Webserviceの "servicename"属性で定義された実際のサービス名ではなく、Beanを使用してエンドポイントを定義しているのか理解してください。
ありがとうございます。