我在许多不同的地方看到了同样的问题,即使经过大量的谷歌搜索,我也无法解决它.我想要做的事情(更大的图片)是通过java网络服务教程,这看起来似乎不同步,
特别是在这里,当我尝试编译时,我收到以下消息:
C:\ javaeetutorial5\examples\jaxws\common\targets.xml:26:无法找到taskdef类com.sun.tools.ws.ant.WsImport
我尝试了许多不同的放置罐子或改变环境变量的组合,但没有结果.有成功的故事吗?
完整生成错误消息如下:
建筑失败
C:\ javaeetutorial5\examples\jaxws\helloservice\build.xml:4:执行此行时发生以下错误:
C:\ javaeetutorial5\examples\jaxws\common\targets.xml:26:taskdef无法找到类com.sun.tools.ws.ant.WsImport所需的类:org/apache/tools/ant/DynamicConfigurator
使用类加载器AntClassLoader [C:\ Program Files(x86)\ Java\jdk1.6.0_23\lib\tools.jar]
总时间:0秒
和相应的taskdef:
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
<classpath refid="jaxws.classpath"/>
</taskdef>
Run Code Online (Sandbox Code Playgroud)
还可以查看认可目录:
C:\javaeetutorial5\kschneid>cd %JAVA_HOME%
C:\Program Files (x86)\Java\jdk1.6.0_23>dir lib\endorsed
Volume in drive C is OSDisk
Volume Serial Number is AAAA-BBBB
Directory of C:\Program Files (x86)\Java\jdk1.6.0_23\lib\endorsed
25/02/2011 09:34 <DIR> .
25/02/2011 09:34 <DIR> ..
25/02/2011 09:34 105,134 jaxb-api.jar
25/02/2011 09:33 54,476 jaxws-api.jar
2 File(s) 159,610 bytes
2 Dir(s) 110,907,056,128 bytes free
C:\Program …Run Code Online (Sandbox Code Playgroud) 我有来自oracle的NO-.net webservice要访问我需要添加soap标头.如何在java中添加soap标头?
Authenticator.setDefault(new ProxyAuthenticator("username", "password"));
System.getProperties().put("proxySet", "true");
System.setProperty("http.proxyHost", "IP");
System.setProperty("http.proxyPort", "port");
proxy = new RegPresMed_Service(new URL("webservice")).getRegPresMed();
((BindingProvider) proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "realwebservice");
((BindingProvider) proxy).getRequestContext().put("com.sun.xml.ws.request.timeout", new Integer(60000));
((BindingProvider) proxy).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "webserviceUsername");
((BindingProvider) proxy).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "webservicePassword");
Run Code Online (Sandbox Code Playgroud)
这有必要吗?
((BindingProvider) proxy).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "webserviceUsername");
((BindingProvider) proxy).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "webservicePassword");
Run Code Online (Sandbox Code Playgroud)
我的肥皂标题是这样的:
<wsse:Security soapenv:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-6"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>username</wsse:Username>
<wsse:Password
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
<wsse:Nonce
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">randomnaumber==</wsse:Nonce>
<wsu:Created>dateCreated</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
Run Code Online (Sandbox Code Playgroud) 您知道创建Web服务客户端服务实例的成本是多少?
JavaWebService service = new JavaWebService();
SomePort port = service.getJavaWebServicePort();
Run Code Online (Sandbox Code Playgroud)
创建服务一次,然后在多线程环境(webapp)中重用相同的端口并不危险?
请注意,端口getPort和端口本身不是线程安全的,但是如果服务成本高昂,每次创建服务时都可能会产生问题.
任何的想法 ?
谢谢
我有一个Web服务,我正在GlassFish上部署它.我通过http:// localhost:10697/APIService/APIServiceService?wsdl访问了它的wsdl.
现在我将WAR文件移植到Tomcat 6.0.24并进行部署.但是我试图使用http:// localhost:8080/APIService/APIServiceService?wsdl访问其wsdl,但我收到404错误.我尝试了各种组合,但似乎都没有.
如何访问wsdl文件plz?
感谢致敬,
更新:你在这里web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)
但我找不到sun-jaxws.xml......非常感谢!问候
我试着通过JAX-WS访问SharePoint列表中所描述的在这里
但是,当运行下面的代码时,我得到:
java.lang.Exception: Exception. See stacktrace.com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized
Run Code Online (Sandbox Code Playgroud)
Sharepoint需要NTLM身份验证.可能是什么问题?非常感谢!
public static ListsSoap sharePointListsAuth(String userName, String password) throws Exception {
ListsSoap port = null;
if (userName != null && password != null) {
try {
Lists service = new Lists();
port = service.getListsSoap();
System.out.println("Web Service Auth Username: " + userName);
((BindingProvider) port).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, userName);
((BindingProvider) port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
} catch (Exception e) {
throw new Exception("Error: " + e.toString());
}
} else {
throw new Exception("Couldn't …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Tomcat上部署基于JAX-WS的Web服务时最小化所需的配置.随着Servlet 3.0的推出(由Tomcat 7+支持),web.xml可以抛出,但仍然存在sun-jaxws.xml.这篇博文很有意思:
当然,通过使用jax-ws注释,即使配置sun-jaxws.xml也可以选择使其完全无描述符,但这需要指定一个默认的url-pattern,如JSR-109或自定义模式,如Jersey REST服务,在JAX-WS规范中.
是否有可能避免sun-jaxws.xml在Tomcat上,以及如何?
我在ubuntu下的jboss上部署了简单的"HelloWorld"Web服务.我创建了简单的客户端,但我无法让它工作.每次运行客户端时,我都会收到NullPointerException.
请注意,我在Ubuntu下运行Oracle Java 7.
这是代码:HelloWorldClient.java
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class HelloWorldClient {
public static void main(String[] args){
URL url;
try {
url = new URL("http://localhost:8080/WebServiceProject/helloWorld?wsdl");
QName qname = new QName("http:///", "HelloWorldImplService");
Service service = Service.create(url, qname);
HelloWorld hello = service.getPort(HelloWorld.class);
System.out.println(hello.sayHello("mkyong"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
}
HelloWorld.java
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
@WebMethod
public String sayHello(String name);
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
Exception in thread …Run Code Online (Sandbox Code Playgroud) 我们正在尝试在JAX Web服务中执行安全性实现,并在头部中传递UserName和Password,如下所示.
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="Id-8zvykuwmK8yg6dxn3632nQJB" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>gears_user</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">##########</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
Run Code Online (Sandbox Code Playgroud)
在Java中,我们正在尝试检索用户名和密码,但我们不知道如何做,因为它是Soap Header的一部分,我们之前没有检索过头信息.
.....
@Resource
WebServiceContext wsctx;
public ServiceAvailabilityResponseType inquireGeographicEligibility(ServiceAvailabilityRequestType inquireGeographicEligibilityRequest)
throws WSException
{
HeaderList hl=(HeaderList)wsctx.getMessageContext().get(JAXWSProperties.INBOUND_HEADER_LIST_PROPERTY);
QName security = new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
"Security");
Header hd = hl.get(security, false);
QName userName = new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
"Username");
try
{
System.out.println(hd.readHeader());
System.out.println(hd.getAttribute(userName));
}catch (Exception e) {
System.out.println(e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
我们正在尝试如上所述并获取标题元素,但它没有返回值.任何有关检索用户名和密码的方法的帮助将不胜感激.
jax-ws ×10
java ×9
web-services ×6
soapheader ×2
tomcat ×2
glassfish ×1
java-ee ×1
ntlm ×1
port ×1
sharepoint ×1
soap ×1
spring ×1
ws-security ×1
wsdl ×1