c+=ä¸ä½¿ç¨Axiså®ç°webserviceçåºæ¬è¿ç¨ï¼
使ç¨Axis C++å¼åWebæå¡çåºæ¬è¿ç¨å¯ä»¥ç®åæè¿°å¦ä¸ï¼
1ã使ç¨Javaè¯è¨æè¿°WEBæå¡
2ã使ç¨Java2WSDLå·¥å
·çæWSDLæ件
3ã使ç¨WSDL2Wså·¥å
·çææå¡ç«¯ä»£ç æ¡æ¶
4ãç¼ç å®ç°serviceï¼å¹¶é¨ç½²æå¡
5ã使ç¨WSDL2Wså·¥å
·çæ客æ·ç«¯ä»£ç æ¡æ¶
6ãç¼ç å®ç°å®¢æ·ç«¯
ä¸ãå®ä¾æ¼ç¤º
è¿é以ä¸ä¸ªç®åçå æ³Addæå¡æ¥è¯´æç¨Axis C++æ建webServiceçè¿ç¨ã
1ã使ç¨Javaè¯è¨æè¿°WEBæå¡
Axis C++ä¸æ们å¿
é¡»å
å®ä¹å¥½WSDLåæ¹å¯çæç¨æ¥å®ç°è¯¥æå¡ç代ç æ¡æ¶ï¼è¿ä¸ç¹ä¸Axis Javaä¸åãçæWSDLæ¹æ³å¾å¤ï¼å¯ä»¥ä½¿ç¨Java2WSDLå·¥å
·ï¼å½ç¶ä¹å¯ä»¥æå·¥ç¼åï¼è¿é使ç¨Java2WSDLå·¥å
·çæãä¸é¢æ们对Addæå¡ç¨Javaè¯è¨æè¿°ï¼
public interface Add{
public int add(int x, int y);
}
åªè¦æ¹æ³ç声æå³å¯ï¼ä¸éè¦å®ç°æ¹æ³ï¼å æ¤æ们使ç¨æ¥å£æ¥å®ä¹ãå°ä¸é¢ç代ç ä¿å为Add.javaã
2ã使ç¨Java2WSDLå·¥å
·çæWSDLæ件
javac Add.java (çæ.classæ件)
java -Djava.ext.dirs=$AXISCPP_HOME/lib/axisjava org.apache.axis.wsdl.Java2WSDL -o Add.wsdl -l"
http://localhost/axis/Add" -n"
http://localhost/axis/Add" Add
ç»è¿ä¸é¢ä¸¤æ¥ï¼æ们就å¯ä»¥å¾å°Add.wsdlæ件ãéè¦è¯´æçæ¯ï¼çæçWSDLæ件ææ¶ä¼æéï¼intfé½æäºimplï¼,è¿å¯è½æ¯Java2WSDLå·¥å
·çBugãå¦æåºç°è¿ç§æ
åµï¼å¯ä»¥åAxis C++èªå¸¦çä¾åWSDLæ件对æ¯ãï¼æ³¨ï¼æè±äºä¸¤å¤©æ¶é´ææ¾åºè¿ä¸ªé®é¢ï¼
3ã使ç¨WSDL2Wså·¥å
·çææå¡ç«¯ä»£ç æ¡æ¶
æä¸é¢çWSDLæ件ï¼æ们å¯ä»¥ç¨WSDL2Wså·¥å
·çææå¡ç«¯ææ¶ã
java -Djava.ext.dirs=$AXISCPP_HOME/lib/axisjava -cp $AXISCPP_HOME/lib/axis/wsdl2ws.jar org.apache.axis.wsdl.wsdl2ws.WSDL2Ws Add.wsdl -lc++ -sserver
-s server 表示çæserver代ç æ¡æ¶
-l c++ 表示çæC++代ç
4ãç¼ç å®ç°serviceï¼å¹¶é¨ç½²æå¡
ä¸é¢çæçæ件ä¸ï¼æ们åªéè¦å®ç°Add.cppä¸çaddæ¹æ³å³å¯ã
... ...
xsd__int Add::add(xsd__int Value0, xsd__int Value1)
{
return Value0+Value1;
}
... ...
对代ç ç¼è¯å¹¶é¾æ¥çæ.soå¨æåºï¼
g++ -shared -I$AXISCPP_HOME/include -o libadd.so *.cpp
对æå¡è¿è¡é¨ç½²ï¼æ¥éª¤å¦ä¸ï¼
(1).å°çæçlibadd.soæ件å¤å¶è³$AXISCPP_DEPLOY/libç®å½
(2).å¤å¶Add.wsdlæ件è³$AXISCPP_DEPLOY/wsdlsç®å½
(3).ç¼è¾AXISCPP_DEPLOY/etc/server.wsddæ件并å¨ç¸åºä½ç½®æ·»å å¦ä¸å
容ï¼
<service name="Add" provider="CPP:RPC" description="Add Service ">
<parameter name="className" value="/apache/axiscpp/lib/libadd.so"/>
<parameter name="allowedMethods" value="add "/>
</service>
(4).éæ°å¯å¨HTTPæå¡
(5).æ£æ¥
http://localhost/axisæ¯ä¸å¦ææ°å¢çAddæå¡
为äºæµè¯æ们åå¸çWebæå¡æ¯å¦å·¥ä½æ£å¸¸ï¼æ们ä¸é¢å©ç¨Axis C++æ¥çæè°ç¨è¯¥æå¡ç客æ·ç«¯ä»£ç 并è¿è¡æµè¯ã
5ã使ç¨WSDL2Wså·¥å
·çæ客æ·ç«¯ä»£ç æ¡æ¶
java -Djava.ext.dirs=$AXISCPP_HOME/lib/axisjava -cp $AXISCPP_HOME/lib/axis/wsdl2ws.jar org.apache.axis.wsdl.wsdl2ws.WSDL2Ws Add.wsdl -lc++ -sclient
-s client 表示çæclient代ç æ¡æ¶
-l c++ 表示çæC++代ç
6ãç¼ç å®ç°å®¢æ·ç«¯
ä¸è¿°å½ä»¤çæäºAdd.hpp, Add.cpp,æ们åç¼å客æ·ç«¯å
¥å£ç¨åº AddClient.cppï¼
#include "Add.hpp"
#include <stdio.h>
int main(int argc, char** argv)
{
Add ws("
http://localhost/axis/Add");
int sum;
if(argc<2)
{
printf("Usage:%s num1 num2\n", argv[0]);
return -1;
}
sum = ws.add(atoi(argv[1]),atoi(argv[2]));
printf("%d\n",sum);
return 0;
}
ç¼è¯å®¢æ·ç«¯ï¼çæå¯æ§è¡æ件ï¼
g++ -I$AXISCPP_HOME/include -L$AXISCPP_DEPLOY/lib -laxis_client -ldl -o Add *.cpp
ä¹åï¼å¯ä»¥ç¨Addå½ä»¤æµè¯æå¡å·¥ä½æ¯å¦æ£å¸¸ã