我正在尝试使用webservice
spring-boot
以下是我如何设置它。
我有interface
有一些methods
说
@WebService
public interface FirstInterface
{
@WebMethod
void method1(@WebParam(name = "id") String id);
void method2(@WebParam(name = "id2") String id);
}
我还有一个interface
还有一些methods
它扩展了FirstInterface
@WebService
public interface SecondInterface extends FirstInterface
{
@WebMethod
void method3(@WebParam(name = "id") String id);
void method4(@WebParam(name = "id2") String id);
}
现在我有一个实现SecondInterface
的实现类
并endpointInterface
引用我的SecondInterface
这样的内容:
@Service
@WebService(endpointInterface = "com.somepackage.SecondInterface")
public class CallBackServicesImpl implements SecondInterface
{
@Override
//override all four methods here
}
现在我有一个发布这些服务的配置类
@Configuration
public class WebServiceConfig
{
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), serviceImpl());
endpoint.publish(SERVICE_NAME_PATH);
return endpoint;
}
}
问题 webservice
已使用此设置发布,endpointinterface
指向FirstInterface
,但只有两种方法可供使用。
现在我想要四个方法可供客户端使用,所以我将endpointinterface
指向SecodInterface
并开始抛出异常Error creating bean with name 'endpoint'
,org.apache.cxf.service.factory.ServiceConstructionException
< / p>
我错过了一些基本的东西吗?我怎样才能实现这种行为?
答案 0 :(得分:0)
删除impl类
上的@WebService注释这是工作副本
FirstInterface.java
@WebService
public interface FirstInterface {
@WebMethod
void method1(@WebParam(name = "id") String id);
@WebMethod
void method2(@WebParam(name = "id2") String id);
}
<强> SecondInterface.java 强>
@WebService
public interface SecondInterface extends FirstInterface {
@WebMethod
void method3(@WebParam(name = "id") String id);
@WebMethod
void method4(@WebParam(name = "id2") String id);
}
Impl class
@Service
public class KPImpl implements SecondInterface {
public static final Logger LOG = LoggerFactory.getLogger(KPImpl.class);
@Override
public void method3(String id) {
LOG.info("Method3 {}", id);
}
@Override
public void method4(String id) {
LOG.info("Method4 {}", id);
}
@Override
public void method1(String id) {
LOG.info("Method1 {}", id);
}
@Override
public void method2(String id) {
LOG.info("Method2 {}", id);
}
}
最后配置文件
@Configuration
public class WsConfiguration {
@Bean
public Server getJaxWsServer(SpringBus bus, KPImpl impl) {
final JaxWsServerFactoryBean serverFctry = new JaxWsServerFactoryBean();
serverFctry.setAddress("/kp");
serverFctry.setServiceBean(impl);
serverFctry.setServiceClass(KPImpl.class);
serverFctry.getFeatures().add(new LoggingFeature());
return serverFctry.create();
}
}