Thanks willem and Glen: I have tried, it seems I can only make CXF to publish a service with single port , I still cannot make CXF to publish a service with multi-port taking effect at same time;
Also I have tried the example of CXF systest which support multiport(systests\ws-security\src\test\java\org\apache\cxf\systest\ws\security\Server.java) Following is the CXF systest 's wsdl, which contains 2 port. But the published service only has single port take effect; <wsdl:service name="GreeterService"> <wsdl:port name="TimestampSignEncryptPort" binding="tns:Greeter_SOAPBinding"> <soap:address location="http://localhost:9000/GreeterService/TimestampSignEncryptPort" /> </wsdl:port> <wsdl:port name="UsernameTokenPort" binding="tns:Greeter_SOAPBinding"> <soap:address location="http://localhost:9000/GreeterService/UsernameTokenPort" /> </wsdl:port> </wsdl:service> When I run the example, I found when I trying to retrieve wsdl from http://mycomputername:9000/GreeterService/TimestampSignEncryptPort?wsdl only the TimestampSignEncryptPort will take effect (the address will be replaced as a correct url by cxf), and also retrieve wsdl from http://mycomptername:9000/GreeterService/UsernameTokenPort?wsdl , only the UsernameTokenPort will take effect; It seems the CXF doesn't publish a service for 2 port at same time, but just published two different service, and each service make one port taking effect and leave another aside