有大神帮我看看这个webservice接口写的哪里有问题吗?
我是用weblogic 12发布的cxf webservice接口。
我的接口类:
package servhellow;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
String sayHi(String text);
String sayHiXML(String text, int index);
String sayHiNull();
}
实现类:
package servhellow;
import java.util.List;
import javax.jws.WebService;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
@WebService(endpointInterface = "servhellow.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHi(String text) {
System.out.println("sayHi called text=" + text);
return "Hello " + text;
}
public String sayHiXML(String text, int index) {
System.out.println("time1=" + System.currentTimeMillis());
System.out.println("sayHiXML called");
System.out.println("text:\n" + text);
try {
Document doc = DocumentHelper.parseText(text);
System.out.println("doc.asXML():\n" + doc.asXML());
Element root = doc.getRootElement();
List list = doc.selectNodes("//root/namelist/name/@sex");
System.out.println("listsize=" + list.size());
for (int i = 0; i<list.size(); i++) {
// Element ele = (Element)list.get(i);
// System.out.println(ele.asXML());
Attribute attr = (Attribute)list.get(i);
System.out.println(attr.asXML() + ", name=" + attr.getName() +
", text=" + attr.getText() + ", value=" + attr.getValue() +
", path=" + attr.getPath());
}
list = doc.selectNodes("//root/namelist/name");
System.out.println("listsize=" + list.size());
for (int i = 0; i<list.size(); i++) {
Element ele = (Element)list.get(i);
System.out.println(ele.asXML() + ", name=" + ele.getName() +
", text=" + ele.getText() + ", value=" + ele.getStringValue() +
", path=" + ele.getPath());
}
Element subroot = root.element("attrlist");
if (subroot == null) {
return "ERROR";
}
list = subroot.elements();
// list = doc.selectNodes("//root/attrlist");
// list = ((Element)list.get(0)).elements();
System.out.println("listsize=" + list.size());
for (int i = 0; i<list.size(); i++) {
Element ele = (Element)list.get(i);
System.out.println(ele.asXML() + ", name=" + ele.getName() +
", text=" + ele.getText() + ", value=" + ele.getStringValue() +
", path=" + ele.getPath());
}
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter xmlWriter = new XMLWriter(format);
xmlWriter.write(doc);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("time2=" + System.currentTimeMillis());
return "Hello " + text + ", index=" + index;
}
public String sayHiNull() {
System.out.println("sayHiNull called");
return "hellow no input";
}
}
定义的服务:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:endpoint
id="helloWorld"
implementor="servhellow.HelloWorldImpl"
address="/HelloWorld" />
</beans>
定义客户端:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
<bean id="clienthellow" class="servhellow.HelloWorld"
factory-bean="clientHellowFactory" factory-method="create"/>
<bean id="clientHellowFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="servhellow.HelloWorld"/>
<property name="address" value="http://localhost:7001/services/HelloWorld"/>
</bean>
</beans>
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
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
调用程序:
package client;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.*;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import servhellow.HelloWorld;
import servhellow.HelloWorldImpl;
public final class ClientHellow {
private ClientHellow() {
}
public void sayHi() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "wsclient/helloworld.xml" });
// HelloWorld client = (HelloWorld) context.getBean("clienthellow");
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1"+client);
HelloWorld client = new HelloWorldImpl();
String response = client.sayHi("Joe");
System.out.println("Response: " + response);
}
public void sayHiXML() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "wsclient/helloworld.xml" });
HelloWorld client = (HelloWorld) context.getBean("clienthellow");
String xmlstr = xmlpack();
String response = client.sayHiXML(xmlstr, 1);
System.out.println("Response: \n" + response);
}
/**
* 使用 jdom 生成 xml 文件
* @return
*/
private String xmlpack() {
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("root");
Element subroot = root.addElement("namelist");
Element ele = subroot.addElement("name");
ele.setText("Tom");
ele.addAttribute("sex", "男 22");
ele = subroot.addElement("name");
ele.setText("Mary");
ele.addAttribute("sex", "女");
subroot = root.addElement("attrlist");
ele = subroot.addElement("name1");
ele.setText("Tom1");
ele.addAttribute("sex1", "b1");
ele = subroot.addElement("name1");
ele.setText("Mary1");
ele.addAttribute("sex1", "g1");
try {
return doc.asXML();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static void main(String args[]) throws Exception {
ClientHellow client = new ClientHellow();
System.out.println("time1=" + System.currentTimeMillis());
client.sayHi();
System.out.println("time2=" + System.currentTimeMillis());
client.sayHiXML();
System.out.println("time3=" + System.currentTimeMillis());
// System.out.println(client.xmlpack());
}
}
运行后为什么会报 http://localhost:7001/services/HelloWorld 404。
具体信息:
警告: Interceptor for {http://servhellow/}HelloWorldService#{http://servhellow/}sayHiXML has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:484)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:310)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:262)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
at $Proxy34.sayHiXML(Unknown Source)
at client.ClientHellow.sayHiXML(ClientHellow.java:56)
at client.ClientHellow.main(ClientHellow.java:101)
Caused by: java.net.ConnectException: ConnectException invoking http://localhost:7001/services/HelloWorld: Connection refused: connect
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:2058)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2043)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:639)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
... 9 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at sun.net.NetworkClient.doConnect(NetworkClient.java:158)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:852)
at
全部代码都在这 希望能有人一起讨论讨论,指点指点,我也是刚开始做java有好多地方不太懂希望大家帮帮忙。共同学习。
[解决办法]
没有愿意进来聊聊的吗?
[解决办法]
null