如果還不知道怎麼将wsdl檔案轉為服務端代碼,那麼請自行百度,或者去看我的另一篇博文。
如果你知道,那麼就好辦了。
所謂通過main方法來釋出webService服務端,就是通過Endpoint類來釋出:
将生成的服務端代碼放入工程,建立一個Main方法,鍵入如下代碼:
import java.util.concurrent.Executors;
import javax.xml.ws.Endpoint;
import com.lansoft.ws.service.impl.CollectAdapterServicePortImpl;
public class ServiceMain {
public static void main(String[] args) {
//CollectAdapterServicePortImpl是生成java代碼ICollectAdapterService接口的實作類
Endpoint endpoint = Endpoint.create(new CollectAdapterServicePortImpl());
endpoint.setExecutor(Executors.newScheduledThreadPool(100));
//ICollectAdapterService是生成的接口
endpoint.publish("http://192.168.254.231:8080/ICollectAdapterService");
}
}
項目結構如圖:
當然,上面的接口和實作類可以改為生成代碼的其他的接口和實作類,但是接口必須和實作類對應。
右鍵run as main方法,在浏覽器輸入框輸入:http://192.168.254.231:8080/ICollectAdapterService?wsdl
出現相關代碼則表示啟動成功
因為我的工程是maven工程,是以在這裡曬出來我引入的和cxf相關的包:
<dependency>
<groupid>org.apache.cxf</groupid>
<artifactid>cxf</artifactid>
<version>3.0.7</version>
<type>pom</type>
</dependency>
<dependency>
<groupid>org.apache.cxf</groupid>
<artifactid>cxf-rt-frontend-jaxws</artifactid>
<version>3.0.7</version>
</dependency>
<dependency>
<groupid>org.apache.cxf</groupid>
<artifactid>cxf-rt-transports-http</artifactid>
<version>3.0.7</version>
</dependency>
<!--缺少jetty可能是報錯:Cannot find any registered HttpDestinationFactory from the Bus -->
<!-- 如果是tomcat則沒問題-->
<dependency>
<groupid>org.apache.cxf</groupid>
<artifactid>cxf-rt-transports-http-jetty</artifactid>
<version>3.0.7</version>
</dependency>
注意:
怎麼說呢,如果不是maven項目的話,隻是普通的web項目,那麼加入相關代碼,寫好釋出服務端main方法的話,直接run as 就可以了。因為我的Eclipse配置的是tomcat,是以預設是通過tomcat将服務端給發不出去了,值得注意的是,我的整個web項目并沒有放在tomcat的伺服器上。
如果是maven工程(像我上面的那樣),因為我在pom檔案中設定了使用jetty啟動工程,雖然沒有通過maven指令jetty:run來啟動整個項目,但是通過main方法直接釋出服務端後,還是通過jetty來講服務端發不出去了,這個時候就需要上述pom檔案中提到的那個jar包了。
如果有不懂,或是不了解的同學,可以私信我,或者是下方留言,我看到後會及時回複的。
雖然,,,我也是一個小白。