大黄瓜de冬天 2022-02-22 13:44 采纳率: 88.9%
浏览 133
已结题

springboot整合webservice,启动报端口占用错误

问题遇到的现象和发生背景

项目是springboot项目,整合webservice服务端和客户端时报端口占用。

问题相关代码,请勿粘贴截图
@WebService(name="TestUserService",targetNamespace="http://service.erpJlb.jianlibao.com")
@Component
public interface TestUserService {

    @WebMethod
    public TestUser getTestUser(@WebParam(name = "name") String name);

    @WebMethod
    @WebResult(name="String",targetNamespace="")
    public String getUserName(@WebParam(name = "name") String name);

}

@WebService(serviceName="TestUserService",//对外发布的服务名
            targetNamespace="http://service.erpJlb.jianlibao.com",//指定你想要的名称空间,通常使用使用包名反转
            endpointInterface="com.jianlibao.erpJlb.service.TestUserService")//服务接口全路径, 指定做SEI(Service EndPoint Interface)服务端点接口
@Component
public class TestUserServiceImpl implements TestUserService {

    private Map<Long, TestUser> userMap = new HashMap<Long, TestUser>();

    @Override
    public TestUser getTestUser(String name) {
        return userMap.get(name);
    }

    @Override
    public String getUserName(String name) {
        return "name为:" + name;
    }

    public TestUserServiceImpl() {
        System.out.println("向实体类插入数据");
        TestUser testUser = new TestUser();
        testUser.setUserId(SnowflakeIdWorker.generateId());
        testUser.setName("小红");
        testUser.setAge("20");
        userMap.put(testUser.getUserId(), testUser);
    }
}

@Configuration
public class CxfConfig {

    @Autowired
    private Bus bus;

    @Autowired
    private TestUserService testUserService;

    /**
     * 此方法作用是改变项目中服务名的前缀名,此处127.0.0.1或者localhost不能访问时,请使用ipconfig查看本机ip来访问
     * 此方法被注释后:wsdl访问地址为http://127.0.0.1:8080/services/user?wsdl
     * 去掉注释后:wsdl访问地址为:http://127.0.0.1:8080/soap/user?wsdl
     * @return
     */
    @SuppressWarnings("all")
    @Bean
    public ServletRegistrationBean aaaaaa() {
        return new ServletRegistrationBean(new CXFServlet(), "/soap/*");
    }

    /** JAX-WS
     * 站点服务
     * **/
    @Bean
    public Endpoint endpoint() {
        EndpointImpl endpoint = new EndpointImpl(bus, testUserService);
        endpoint.publish("/testUser");
        return endpoint;
    }
}

pom文件
<dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
            <version>3.1.11</version>
        </dependency>
运行结果及报错内容
Connected to the target VM, address: '127.0.0.1:53835', transport: 'socket'
Application Version: 1.0.0
Spring Boot Version: 2.2.13.RELEASE

13:19:21.253 [background-preinit] INFO  o.h.v.i.util.Version - [<clinit>,21] - HV000001: Hibernate Validator 6.0.22.Final
13:19:21.300 [restartedMain] INFO  c.j.JianLiBaoApplication - [logStarting,55] - Starting JianLiBaoApplication on LAPTOP-EIBFNEMF with PID 16164 (E:\workSpace\jlb-api\JianLiBao-api\jianlibao\jianlibao-admin\target\classes started by 高印-胡水 in E:\workSpace\jlb-api\JianLiBao-api\jianlibao)
13:19:21.300 [restartedMain] INFO  c.j.JianLiBaoApplication - [logStartupProfileInfo,655] - The following profiles are active: druid
13:19:25.490 [restartedMain] ERROR o.s.b.SpringApplication - [reportFailure,826] - Application run failed
java.lang.IllegalArgumentException: Could not find class [org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration]
    at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:334)
    at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:446)
    at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:369)
    at org.springframework.core.annotation.TypeMappedAnnotation.asMap(TypeMappedAnnotation.java:284)
    at org.springframework.core.annotation.AbstractMergedAnnotation.asAnnotationAttributes(AbstractMergedAnnotation.java:193)
    at org.springframework.core.type.AnnotatedTypeMetadata.getAnnotationAttributes(AnnotatedTypeMetadata.java:106)
    at org.springframework.context.annotation.AnnotationConfigUtils.attributesFor(AnnotationConfigUtils.java:285)
    at org.springframework.context.annotation.AnnotationBeanNameGenerator.determineBeanNameFromAnnotation(AnnotationBeanNameGenerator.java:102)
    at org.springframework.context.annotation.AnnotationBeanNameGenerator.generateBeanName(AnnotationBeanNameGenerator.java:81)
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.registerBeanDefinitionForImportedConfigurationClass(ConfigurationClassBeanDefinitionReader.java:160)
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:141)
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:236)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:280)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:96)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:707)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
    at com.jianlibao.JianLiBaoApplication.main(JianLiBaoApplication.java:22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:144)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:284)
    at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:324)
    ... 29 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:53835', transport: 'socket'

Process finished with exit code 0
我的解答思路和尝试过的方法

尝试了进程查找,但启动的时候才会出现端口且时随机的;想给webservice设置一个端口,网上搜了但没找到我需要的答案;还有个奇怪的现象有时候可以启动,

我想要达到的结果

1.给webservice设置一个端口,使他们启动时不冲突
2.不设置端口,但解决单口占用
以上任其一都非常nice了

  • 写回答

2条回答 默认 最新

  • yuye9427 2022-02-22 14:00
    关注

    你这个不是端口号的问题,应该是注入对象的事,把类里的东西全注掉,然后放开部分重启,看到哪步出错就是了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月22日

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了