从Spring升级到Spring Boot破坏了JAX-WS客户端配置

时间:2018-04-26 14:13:14

标签: spring-boot jax-ws javabeans

我正在开发一个项目,目前我们正在从Spring升级到Spring Boot。我们有一个在Controller中自动装配的JAX-WS客户端bean,但现在它说它找不到那种类型的bean。下面你可以看到代码片段,我不得不编辑信息,所以如果一些命名链接被破坏,对不起。

我们在xml中有一个JAX-WS客户端配置描述为:

<jaxws:client id="applyClient"
              serviceClass="JaxClass"
              address="jaxAddress" >

    <jaxws:outInterceptors>
        <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
            <constructor-arg>
                <map>
                    <entry key="action" value="Signature Timestamp"/>
                    <entry key="signatureKeyIdentifier" value="DirectReference"/>
                    <entry key="passwordType" value="PasswordText" />
                    <entry key="signaturePropFile" value="signature.properties"/>
                    <entry key="user" value="userVal" />
                    <entry key="passwordCallbackRef">
                        <ref bean="passwordCallback"/>
                    </entry>

                </map>
            </constructor-arg>
        </bean>
    ${openComment} <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> ${closeComment}
    </jaxws:outInterceptors>
   <jaxws:inInterceptors>
        ${openComment}<bean class="org.apache.cxf.interceptor.LoggingInInterceptor" /> ${closeComment}
    </jaxws:inInterceptors> 
</jaxws:client>

此服务类如下:

@WebService(targetNamespace = "Folder", name = "TestName")
@XmlSeeAlso({Folder.ObjectFactory.class, otherFolder.ObjectFactory.class})

public interface JaxClass {

@WebResult(...)
@RequestWrapper(...)
@WebMethod
@ResponseWrapper(...)
public java.lang.String updateGBFoaInformation(
    @WebParam(...)
    Folder.FoaInformation foaInformation
) throws ExchangeRequestValidationException, ExchangeInternalErrorException;

@WebResult(...)
@RequestWrapper(...)
@WebMethod
@ResponseWrapper(...)
public method2 setGBUserSession(
    @WebParam(...)
    Folder.GBUserSessionRequest gbUserSessionRequest
) throws ExchangeRequestValidationException, 

ExchangeInternalErrorException;
}

然后在Controller类中,我们将其自动装配:

@RestController
public class TestController{

@Autowired
JaxClass applyClient;

...

此设置一直有效,直到我们开始升级。现在我们得到错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Field applyClient in TestController required a bean of type 'JaxClass' that could not be found.

Action:

Consider defining a bean of type 'JaxClass' in your configuration.

有点困惑,因为我在过去一周左右的时间里试图解决这个问题。任何帮助或建议表示赞赏。

2 个答案:

答案 0 :(得分:0)

请确保在SpringBoot Application类上使用@ComponentScan注释扫描JaxClass的包。

  

@ComponentScan(&#34; com.xxx.yyy&#34)

答案 1 :(得分:0)

发现问题,虽然技术上xml文件在类路径中,是文件夹位置,但是应用程序不知道要包含它,所以添加了@ImportResource注释并修复了我的问题。