웹 서비스 클라이언트 간의 차이가 하나의 성공으로 인해 하나의 오류가 발생합니다. 웹 서비스가 있습니다. wsdl을 기반으로 tomcat에서 JAXWS 2.2를 사용하여 빌드합니다.
이 wsdl을 바탕으로 훌륭한 클라이언트를 만들었습니다.
외부 클라이언트로부터 웹 서비스를 받고 있는데 서버에서 오류가 발생했을 때 네트워크를 스니핑했는데 다른 점이 있다는 것을 알았습니다 하지만 외부 요청을 스니핑 한 것을 보면 대부분이 네임 스페이스에 얼마나 비판적인지 모르겠습니다. AXIS를 사용하여 클라이언트를 구축 한 것을 볼 수 있습니다. 지금웹 서비스 클라이언트 간의 차이가 하나의 오류 (AXIS) 성공 (JAXWS)
POST /console/ws/APIEndpoint HTTP/1.1
Accept: text/xml, multipart/related
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://foo.com/ServerApi/sendMessageRequest"
User-Agent: JAX-WS RI 2.2.5-b01
Host: 192.168.3.69:18112
Connection: keep-alive
Content-Length: 1221
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns3:sendMessage xmlns:ns2="http://www.foo.com" xmlns:ns3="http://www.foo.com/">
<NP_MESSAGE>
<ns2:HEADER>
<REQUEST_ID>NPAABBYYMMDDXXXXXZZZZ</REQUEST_ID>
<PROCESS_TYPE>PORT</PROCESS_TYPE>
<MSG_TYPE>Publish</MSG_TYPE>
<TRX_NO>MI000004548992</TRX_NO>
<VERSION_NO>1</VERSION_NO>
<RETRY_NO>2</RETRY_NO>
<RETRY_DATE>2011-11-03T11:48:23.769+02:00</RETRY_DATE>
<FROM>MI</FROM>
<TO>aa</TO>
</ns2:HEADER>
<BODY>
</BODY>
</NP_MESSAGE>
</ns3:sendMessage>
</S:Body>
</S:Envelope>
를 실행 한 다음, 바람둥이 예외 메신저에 대한
내가이 서비스에 도달하지만, 여기 스텁 방법 중 하나에 실패 서버 측의 기록에 의하면 알고, 점점 작동 내 고객 서비스
03/11/2011 12:33:43 com.sun.xml.ws.server.sei.EndpointMethodHandler invoke
SEVERE: null
java.lang.NullPointerException
at com.foo.gw.ServiceApi.sendMessage(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:250)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:150)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:261)
:
는
POST /console/ws/APIEndpoint HTTP/1.1
Host: 46.31.96.42:18112
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "http://foo.com/sendMessage"
Content-Length: 1197
Max-Forwards: 10
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<sendMessage xmlns="http://foo.com/">
<NP_MESSAGE>
<ns1:HEADER xmlns:ns1="http://foo.com">
<REQUEST_ID xmlns="">NPMICL111103350390001
</REQUEST_ID>
<PROCESS_TYPE xmlns="">PORT</PROCESS_TYPE>
<MSG_TYPE xmlns="">Publish</MSG_TYPE>
<TRX_NO xmlns="">MI000004554248</TRX_NO>
<VERSION_NO xmlns="">1</VERSION_NO>
<RETRY_NO xmlns="">2</RETRY_NO>
<RETRY_DATE xmlns="">2011-11-03T13:00:06.659+02:00</RETRY_DATE>
<FROM xmlns="">MI</FROM>
<TO xmlns="">TZ</TO>
</ns1:HEADER>
<BODY xmlns="">
</BODY>
</NP_MESSAGE>
</sendMessage>
</soapenv:Body>
</soapenv:Envelope>
톰캣에서 점점 예외 메신저는 다음과 같습니다 :이 작동하지 않는 외부 클라이언트의 요청입니다 17,451,515,
와 바람둥이 반환 : HTTP/1.1 500 Internal Server Error
내가하지 것은 그 이유를 수행 헤더에 일부 매개 변수가 그들 사이에 있지만, 몇 가지 정보를 읽은 후 누락 된 것을 알 수 있습니다. 요청이 바람둥이의 서비스에
UPDATE받을 수 있나요 beacose :
: 난 것은 메신저 예외를 받고 그 다음에
는, 내가 디버깅 할 수없는 경우에만 분산 로그를 내 서비스 클래스의 모습을 어떻게 여기 입니다 업데이트 2 :
내가 NP_MESSAGE가 null 인 것을 알고 있지만 내가 볼 수있는 이유는 클라이언트
@WebService (targetNamespace="http://www.foo.com/")
public class Api {
Api()
{
}
@WebResult(name="return_NP_ACK", partName="return_NP_ACK")
@WebMethod(operationName = "sendMessage")
public NPACK sendMessage(@WebParam(name = "NP_MESSAGE")NPMESSAGE NP_MESSAGE)
{
if(null != NP_MESSAGE)
{
Logger.WriteLog("WebService NP_MESSAGE not null ",Level.DEBUG);
}
else
{
// I know that NP_MESSAGE is null im getting here !!!
Logger.WriteLog("WebService NP_MESSAGE is null ",Level.DEBUG);
}
HEADER hHeader = NP_MESSAGE.getHEADER(); <-- here is where the exception
....
...
}
}
UPDATE 3에서 온다 때 데이터를 얻을 : 아니, 난 임하지만, 무언가를 발견
내 경우에는 확실하지 않습니다. 그리고 만약 그렇다면. 어떻게 해결할 수 있을까요? 이것은 AX-RPC versus JAX-WS에 대한 이야기입니다. 이것이 내 사건이라면 나는 완전한 지식을 가지고 있지 않다. 모든 WS 프레임 워크는 WSDL에서 항상 CORBA와 같은 계약처럼 어떤 일을하지 않았던 스텁을 생성한다고 생각하지 않습니다. 절대 내 .. 결코 ..
어떻게 고칠 수 있습니까? 나는 AXIS로 작업 할 수있는 옵션이 없습니다. 축 프로토콜과 함께 작동하도록 JAXWS에 지시 할 수는 없습니까?
당신은 NPE가 던져지는 라인을보기 위해 디버그를 할 수 없습니까?어떤 변수가 null인지 그리고 왜 – javagirl
이 내 질문을 업데이트했는지 확인하십시오. – user63898
SOAP UI 도구를 사용하여 서비스 요청을 테스트 할 수있는 다른 독립 클라이언트를 사용하는 방법에 대한 조언을 드릴 수 있습니다. 잘못 구성했거나 AXIS 클라이언트가 잘못된 방법으로 호출했습니다 – javagirl