Я написал простое консольное приложение Java в Eclipse, которое ссылается на веб-службу WCF, написанную на C #.Хостинг службы WCF локально на моем ПК, я не могу подключиться к сервису с помощью клиента Java.
Шаги, которые я предпринял для создания Службы WCF, следующие:
Создайте 'Service1.svc' со следующей конечной точкой:
string IService1.Hello (string sName) {return "Hello" + sName + "!";}
Веб-конфигурация для службы выглядит следующим образом:
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding" />
</basicHttpBinding>
</bindings>
<client>
<endpoint binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding"
contract="WcfService1.IService1" name="BasicHttpEndpoint" />
</client>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
Я изменил свойства, чтобы служба всегда использовала порт 8888.
Я протестировала службу с помощью консольного приложения C #.
Чтобы создать клиент Java, я сделал следующее:
Загрузите и установите Glassfish 3.0.1 (сервер приложений), который поставляется в комплекте с Metro (веб-сервер)
Используйте инструмент 'wsimport' в 'bin'directory моего jdk, чтобы сгенерировать код ссылки на службу для клиентского приложения java.Файл .bat, который я запустил для создания ссылки на службу
Скопируйте код из шага 2. выше в новое Java-приложение в Eclipse.
Создайте новый класс Java в моем консольном приложении, которое вызывает веб-службу следующим образом
`
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import org.tempuri.Service1;
import org.tempuri.IService1;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
try {
Service1 service = new Service1(new URL("http://localhost:8888/Service1.svc?wsdl"), new QName("http://tempuri.org", "Service1"));
IService1 port = service.getBasicHttpBindingIService1();
((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:8888/Service1.svc");
String sFileName = port.hello("Cal");
System.out.println(sFileName);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
e.printStackTrace();
}
}
}
`
Ошибка Iполучаю, когда я пытаюсь запустить мое приложение следующим образом:
Exception in thread "main" javax.xml.ws.WebServiceException: {http://tempuri.org}Service1 is not a valid service. Valid services are: {http://tempuri.org/}Service1
at com.sun.xml.ws.client.WSServiceDelegate.(WSServiceDelegate.java:237)
at com.sun.xml.ws.client.WSServiceDelegate.(WSServiceDelegate.java:182)
at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:106)
at javax.xml.ws.Service.(Unknown Source)
at org.tempuri.Service1.(Service1.java:42)
at Main.main(Main.java:17)
Любая помощь с этим приветствуется.Спасибо.