@Slf4j
@Controller
@WebServlet(name = "entryServlet",loadOnStartup = 2)
public class PspEnvPublishController extends HttpServlet {
@Autowired
private FeatureController featureController;
@Value("${pspfeature.profile.pubaddress}")
private String publishAddress;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
log.warn("服务发布地址======" + publishAddress);
Endpoint.publish(publishAddress, featureController);
}
}
以上是通过继承HttpServlet的方式实现Webservice的发布,通过以上方式能正常发布,但如果还需要通过restful的方式访问
featureController里的方法则会报404
发布方式调整如下:
@Slf4j
@Controller
@WebListener
public class PspEnvPublishController implements ServletContextListener {
@Autowired
private YnhrssUserController ynhrssUserController;
@Value("${ynhrssuser.pubaddress}")
private String pubaddress;
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
log.warn("用户管理服务发布地址:" + pubaddress);
Endpoint.publish(pubaddress, ynhrssUserController);
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
即可解决以上问题,调整内容:
1、继承HttpServlet调整为实现
ServletContextListener;
2、逐渐@WebServlet调整为
@WebListener;
3、启动类上删除Servlet的扫描注解@ServletComponentScan。