Почему моя модификация мыла не работает после миграции с CXF 3.5.7 на 4.1.0? Получение CL - это нулевая ошибкаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему моя модификация мыла не работает после миграции с CXF 3.5.7 на 4.1.0? Получение CL - это нулевая ошибка

Сообщение Anonymous »

В настоящее время я мигрирую проект с версии Apache CXF 3.5.7 до 4.1.0, и после миграции моя логика модификации сообщений SOAP прекратила работать. Ошибка, с которой я сталкиваюсь, - это CL - это NULL Exception. Код работал нормально в предыдущей версии, но теперь объект CL кажется нулевым, и я не могу понять, почему. Какие изменения я должен внести, чтобы убедиться, что моя модификация мыла работает правильно в CXF 4.1.0? Любое понимание или предложения будут оценены! < /P>
java.lang.NullPointerException: NullPointerException invoking http://test:4004/se/tm/cc: Cannot invoke "java.net.http.HttpClient.sendAsync(java.net.http.HttpRequest, java.net.http.HttpResponse$BodyHandler)" because "cl" is null
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1452)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1438)
at org.apache.cxf.transport.http.HttpClientHTTPConduit$HttpClientWrappedOutputStream.close(HttpClientHTTPConduit.java:824)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:441)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:356)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:314)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:334)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:320)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:265)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:233)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:207)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:159)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:224)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:312)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:217)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
< /code>
для кода: < /p>
public class OutPreStreamInterceptor extends AbstractPhaseInterceptor{

public OutPreStreamInterceptor(String phase) {
super(phase);
addBefore(SoapPreProtocolOutInterceptor.class.getName());
}

@Override
public void handleMessage(Message message) {
OutputStream os = message.getContent(OutputStream.class);
boolean isOutbound = message == message.getExchange().getOutMessage()
|| message == message.getExchange().getOutFaultMessage();

String content = getRawContent(message);
String newContent = content;
if (isOutbound) {

InterceptorUtils.CachedStream cs = new InterceptorUtils.CachedStream();
message.setContent(OutputStream.class, cs);
String action = retrieveSOAPAction(message);
if (action.contains("test") ) {
newContent = content.replace("tt", "");
}
if (action.contains("test2")) {
newContent = changeJobId(newContent);
}
if (!StringUtils.equalsIgnoreCase(newContent, content)) {
log.debug("0;Outbound message has been changed: " + newContent);
}
try {
replaceContent(message, newContent, os);
} catch (IOException e) {
log.error("0;Error while replacing outbound message {}", e.getMessage());
throw new RuntimeException("Error while replacing outbound message" + e);
}
} else {
// If necessary, in-bound message may be changed here.
}
}

public static void replaceContent(Message message, String newContent, OutputStream os) throws IOException {
InputStream replaceInStream = new ByteArrayInputStream(newContent.getBytes(StandardCharsets.UTF_8));

IOUtils.copy(replaceInStream, os);
replaceInStream.close();

os.flush();
message.setContent(OutputStream.class, os);
os.close();
}
< /code>
Я пытался проверить внутренние классы и изменения, но не повезло. < /p>
Но если удалить этот пользовательский перехватчик, код работает нормально.

Подробнее здесь: https://stackoverflow.com/questions/793 ... 7-to-4-1-0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему моя модификация SOAP не работает после перехода с CXF 3.5.7 на 4.1.0? Получение cl — это нулевая ошибка
    Anonymous » » в форуме JAVA
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Используя CXF 3.5.9, как я могу принудительно изменить тег тела мыла "ns2" в ответе мыла
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Заголовки мыла с использованием плагина cxf-codegen
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Избегайте ответа на ошибку мыла (org.apache.cxf)
    Anonymous » » в форуме JAVA
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Избегайте ответа на ошибку мыла (org.apache.cxf)
    Anonymous » » в форуме Apache
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»