Ошибка JBOSS CXF при использовании SOAP-соединения - PullRequest
0 голосов
/ 28 октября 2019

Я создал SOAP-клиент с использованием Java. При попытке создания SOAPConnectionFactory на сервере Jboss (7.0) происходит исключение classCast, однако сервер tomcat работает нормально. Мы используем библиотеку apache cxf для создания веб-службы

Ошибка:

Failed to determine BusFactory implementation class name.: java.lang.ClassCastException: class org.apache.cxf.bus.spring.SpringBusFactory
        at java.lang.Class.asSubclass(Class.java:3404)
        at org.apache.cxf.BusFactory.getBusFactoryClass(BusFactory.java:390)
        at org.apache.cxf.BusFactory.newInstance(BusFactory.java:316)
        at org.apache.cxf.BusFactory.newInstance(BusFactory.java:303)
        at org.jboss.wsf.stack.cxf.saaj.SOAPConnectionImpl.getConduitInitiator(SOAPConnectionImpl.java:206)
        at org.jboss.wsf.stack.cxf.saaj.SOAPConnectionImpl.call(SOAPConnectionImpl.java:69)
        at com.test.cvx.util.SOAPWSClient.sendMessageToSOAPServer(SOAPWSClient.java:161)
        at com.test.cvx.util.SOAPWSClient.putFile(SOAPWSClient.java:57)
        at com.test.cvx.impl.tradeweb.StandardTradewebMultiEPTask.doFileTransfer(StandardTradewebMultiEPTask.java:1060)
        at com.test.cvx.impl.tradeweb.StandardTradewebMultiEPTask.uploadToDestinationPath(StandardTradewebMultiEPTask.java:1113)
        at com.test.cvx.impl.tradeweb.StandardTradewebMultiEPTask.processMapping(StandardTradewebMultiEPTask.java:826)
        at com.test.cvx.impl.tradeweb.StandardTradewebMultiEPTask.processNewFile(StandardTradewebMultiEPTask.java:667)
        at com.test.cvx.impl.chile.ChileSgTask.runInternal(ChileSgTask.java:57)
        at com.test.cvx.impl.XTask.run(XTask.java:71)
        at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

14:37:06,010 SEVERE [org.apache.cxf.BusFactory] (SCHED-3) Failed to instantiate bus factory.: java.lang.ClassCastException: class org.apache.cxf.bus.spring.SpringBusFactory

Я пробовал разные способы решения этой проблемы, но все еще не решил.

private void connect(){
        try{
            SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
            soapConnection = soapConnectionFactory.createConnection();
        }catch(Exception e){

        }
    }

public String sendMessageToSOAPServer(File file,
            String operation) throws Exception {

        connect();
        final SOAPMessage soapResponse = soapConnection.call(
                createSOAPRequest(file, operation),
                "https://www.gameAbc.com/apache");

        System.out.println("SOAP Request");
        Source sourceIn = soapResponse.getSOAPPart().getContent();

        Transformer transformerIn = TransformerFactory.newInstance().newTransformer();

        transformerIn.setOutputProperty(OutputKeys.INDENT, "yes");
        transformerIn.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

        transformerIn.transform(sourceIn, new StreamResult(System.out));
        return soapResponse.toString();
    }

Когда приложение запускается в jboss, оно пытается создать класс BusFactory и привести неправильный класс. Так что это выдаст ошибку. Пожалуйста, помогите мне решить эту проблему.

...