Обновление с Spring до Spring Boot сломало конфигурацию клиента JAX-WS - PullRequest
0 голосов
/ 26 апреля 2018

Я работаю над проектом, и в настоящее время мы переводим его с Spring на Spring Boot. У нас был клиентский компонент JAX-WS, который был автоматически подключен в контроллере, но теперь он говорит, что не может найти компонент такого типа. Ниже вы можете увидеть фрагменты кода, мне пришлось отредактировать информацию, так что извините, если какая-то ссылка на именование была нарушена.

У нас была конфигурация клиента JAX-WS в xml, описанная как:

<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 голосов
/ 27 апреля 2018

Обнаружил проблему, хотя технически файл xml находился в пути к классам, являясь местоположением папки, приложение не знало, как его включить, поэтому добавила аннотацию @ImportResource, и это исправило мою проблему.

0 голосов
/ 26 апреля 2018

Убедитесь, что пакет, в котором JaxClass сканируется с аннотацией @ComponentScan в классе приложения SpringBoot.

@ ComponentScan ( "com.xxx.yyy")

...