I can not publish and query services in Registry Server?Help please!
I want to use Registry Server in Jwsdp1.5 to publish and query services,but there is some problems:
2006-4-26 10:05:26 com.sun.registry_server.server.RegistryServerServlet init
警告: NamingException: javax.naming.NameNotFoundException: Name org.xml.sax.driver is not bound in this Context
2006-4-26 10:05:27 com.sun.xml.messaging.saaj.soap.MessageImpl identifyContentType
严重: SAAJ0537: 内容类型无效。可能是错误消息,而不是 SOAP 消息
2006-4-26 10:05:27 com.sun.xml.messaging.saaj.soap.MessageImpl <init>
严重: SAAJ0535: 无法内部化消息
javax.xml.registry.JAXRException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: java.security.PrivilegedActionException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
at com.sun.xml.registry.uddi.RegistryServiceImpl.jaxmSend(Unknown Source)
at com.sun.xml.registry.uddi.RegistryServiceImpl.send(Unknown Source)
at com.sun.xml.registry.uddi.Processor.processRequestJAXB(Unknown Source)
at com.sun.xml.registry.uddi.UDDIMapper.findOrganizations(Unknown Source)
at com.sun.xml.registry.uddi.BusinessQueryManagerImpl.findOrganizations(Unknown Source)
at QueryByName.doPost(QueryByName.java:63)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:790)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:709)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:572)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:595)
Caused by: com.sun.xml.messaging.saaj.SOAPExceptionImpl: java.security.PrivilegedActionException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:127)
... 34 more
Caused by: java.security.PrivilegedActionException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:121)
... 34 more
Caused by: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
at com.sun.xml.messaging.saaj.soap.MessageImpl.<init>(MessageImpl.java:231)
at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.<init>(Message1_1Impl.java:43)
at com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl.createMessage(SOAPMessageFactory1_1Impl.java:32)
at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:354)
at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(HttpSOAPConnection.java:150)
... 36 more
Caused by: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Invalid Content-Type:text/html. Is this an error message instead of a SOAP response?
at com.sun.xml.messaging.saaj.soap.MessageImpl.identifyContentType(MessageImpl.java:295)
at com.sun.xml.messaging.saaj.soap.MessageImpl.<init>(MessageImpl.java:146)
... 40 more
can you help me?expectiong your advise!thank you
[5359 byte] By [
happydua] at [2007-10-2 18:35:19]

I was able to publish and query to a UDDI registry server after following this article, but you must create your own private registry, because the public UDDI registries are closed down. http://www.javaworld.com/javaworld/jw-12-2002/jw-1213-webservices.html
I have created my own private registry, I hava installed JWSDP1.5.
I use a .jsp file and a servlet to publish services,the servlet is:
import javax.xml.registry.*;
import javax.xml.registry.infomodel.*;
import java.net.*;
import java.security.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class QueryByName extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
String queryName=request.getParameter("queryname");
Connection connection = null;
RegistryService rs=null;
BusinessLifeCycleManager blcm=null;
BusinessQueryManager bqm = null;
Properties props=new Properties();
props.setProperty("javax.xml.registry.queryManagerURL","http://localhost:8080/RegistryServer");
props.setProperty("javax.xml.registry.lifeCycleManagerURL","http://localhost:8080/RegistryServer");
try{
// Create the connection, passing it the
// configuration properties
ConnectionFactory factory =
ConnectionFactory.newInstance();
factory.setProperties(props);
connection=factory.createConnection();
PrintWriter out=response.getWriter();
out.println("<a href=\"/publishapp/querybyname.jsp\">Back to query page</a>");
/**
* Searches for organizations corresponding to an NAICS
* classification and displays data about them.
*/
rs=connection.getRegistryService();
blcm = rs.getBusinessLifeCycleManager();
bqm = rs.getBusinessQueryManager();
// Define find qualifiers and name patterns
Collection findQualifiers = new ArrayList();
findQualifiers.add(FindQualifier.SORT_BY_NAME_DESC);
Collection namePatterns = new ArrayList();
namePatterns.add("%" + queryName + "%");
// Find using the name
BulkResponse br =
bqm.findOrganizations(findQualifiers,
namePatterns, null, null, null, null);
Collection orgs = br.getCollection();
// Display information about the organizations found
Iterator orgIter = orgs.iterator();
if(!(orgIter.hasNext()))
{
out.println("<H3>");
out.println("There is not the service you need");
out.println("</H3>");
}else
{
out.println("<H2>The service information you need is listed below:</H2>");
int i=0;
while (orgIter.hasNext()) {
Organization org =
(Organization) orgIter.next();
++i;
out.println("<strong>");
out.println(i+". The organization info is:");
out.println("</strong>");
out.println("
");
out.println("Org name: " + (org.getName()).getValue());
out.println("
");
out.println("Org description: " + (org.getDescription()).getValue());
out.println("
");
out.println("Org key id: " + (org.getKey()).getId());
out.println("
");
// Display service and binding information
Collection services = org.getServices();
Iterator svcIter = services.iterator();
while (svcIter.hasNext()) {
Service svc = (Service) svcIter.next();
out.println("<strong>The service info is:</strong>");
out.println("
");
out.println(" Service name: " +
(svc.getName()).getValue());
out.println("
");
out.println(" Service description: " +
(svc.getDescription()).getValue());
out.println("
");
Collection serviceBindings =
svc.getServiceBindings();
Iterator sbIter = serviceBindings.iterator();
while (sbIter.hasNext()) {
ServiceBinding sb =
(ServiceBinding) sbIter.next();
out.println(" Binding " +
"Description: " +
(sb.getDescription()).getValue());
out.println("
");
out.println(" Access URI: <a href='" + sb.getAccessURI() +
"' target='_blank'>"+sb.getAccessURI() +"</a>");
out.println("
");
}
}
// Display primary contact information
User pc = org.getPrimaryContact();
if (pc != null) {
PersonName pcName = pc.getPersonName();
out.println("<strong>The contact info is:</strong>");
out.println("
");
out.println(" Contact name: " +
pcName.getFullName());
out.println("
");
Collection phNums =
pc.getTelephoneNumbers(null);
Iterator phIter = phNums.iterator();
while (phIter.hasNext()) {
TelephoneNumber num =
(TelephoneNumber) phIter.next();
out.println(" Phone number: " +
num.getNumber());
out.println("
");
}
Collection eAddrs = pc.getEmailAddresses();
Iterator eaIter = eAddrs.iterator();
while (eaIter.hasNext()) {
EmailAddress eAd =
(EmailAddress) eaIter.next();
out.println(" Email Address: " +
eAd.getAddress());
out.println("
");
out.println("
");
out.println("
");
}
}
}
}
}
catch (Exception e) {
e.printStackTrace();}
}
}
the exception in the tomcat50-jwsdp/logs:
javax.xml.registry.JAXRException: javax.xml.bind.JAXBException
- with linked exception:
[javax.xml.soap.SOAPException: Unable to create message factory for SOAP: Provider com.sun.xml.messaging.saaj.soap.MessageImpl could not be instantiated: java.lang.IllegalAccessException: Class javax.xml.soap.FactoryFinder can not access a member of class com.sun.xml.messaging.saaj.soap.MessageImpl with modifiers "protected"]
at com.sun.xml.registry.uddi.Processor.processRequestJAXB(Unknown Source)
at com.sun.xml.registry.uddi.UDDIMapper.getAuthorizationToken(Unknown Source)
at com.sun.xml.registry.uddi.ConnectionImpl.setCredentials(Unknown Source)
at Publish.doPost(Publish.java:66)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:790)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:709)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:572)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.xml.bind.JAXBException
- with linked exception:
[javax.xml.soap.SOAPException: Unable to create message factory for SOAP: Provider com.sun.xml.messaging.saaj.soap.MessageImpl could not be instantiated: java.lang.IllegalAccessException: Class javax.xml.soap.FactoryFinder can not access a member of class com.sun.xml.messaging.saaj.soap.MessageImpl with modifiers "protected"]
at com.sun.xml.registry.common.util.MarshallerUtil.jaxbMarshalObject(Unknown Source)
... 32 more
expecting yours advise, thanks!!
I have created my own private registry, I hava installed JWSDP1.5.
I use a .jsp file and a servlet to publish services,the servlet is:
import javax.xml.registry.*;
import javax.xml.registry.infomodel.*;
import java.net.*;
import java.security.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class Publish extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
String userName=request.getParameter("username");
String authPassword=request.getParameter("password");
Connection connection = null;
RegistryService rs=null;
BusinessLifeCycleManager blcm=null;
BusinessQueryManager bqm = null;
Properties props=new Properties();
props.setProperty("javax.xml.registry.queryManagerURL","http://localhost:8080/RegistryServer");
props.setProperty("javax.xml.registry.lifeCycleManagerURL","http://localhost:8080/RegistryServer");
props.setProperty("javax.xml.registry.factoryClass","com.sun.xml.registry.uddi.ConnectionFactoryImpl");
//props.setProperty("com.sun.xml.registry.http.proxyHost",httpHost);
//props.setProperty("com.sun.xml.registry.http.proxyPort",httpPort);
// props.setProperty("com.sun.xml.registry.https.proxyHost",httpsHost);
// props.setProperty("com.sun.xml.registry.https.proxyPort",httpsPort);
try{
// Create the connection, passing it the
// configuration properties
ConnectionFactory factory =
ConnectionFactory.newInstance();
factory.setProperties(props);
connection=factory.createConnection();
PrintWriter out=response.getWriter();
out.println("<a href=\"/publishapp/publish.jsp\">You can click here to be Back </a>");
out.println("<H3>Created connection to registry</H3>");
rs=connection.getRegistryService();
blcm = rs.getBusinessLifeCycleManager();
bqm = rs.getBusinessQueryManager();
//out.println("Got registry service, query " +"manager, and life cycle manager");
// Get authorization from the registry
PasswordAuthentication passwdAuth =
new PasswordAuthentication(userName,authPassword.toCharArray());
Set creds = new HashSet();
creds.add(passwdAuth);
connection.setCredentials(creds);
out.println("
");
out.println("<H3>Established security credentials</H3>");
//receive organization name and description
String orgName=request.getParameter("orgname");
String orgDescription=request.getParameter("orgdescription");
// Create organization name and description
Organization org =
blcm.createOrganization(orgName);
InternationalString s =
blcm.createInternationalString(orgDescription);
org.setDescription(s);
//receive contactor name phone and Email
String contactName=request.getParameter("contactname");
String contactPhone=request.getParameter("contactphone");
String contactEmail=request.getParameter("contactemail");
// Create primary contact, set name
User primaryContact = blcm.createUser();
PersonName pName =
blcm.createPersonName(contactName);
primaryContact.setPersonName(pName);
// Set primary contact phone number
TelephoneNumber tNum = blcm.createTelephoneNumber();
tNum.setNumber(contactPhone);
Collection phoneNums = new ArrayList();
phoneNums.add(tNum);
primaryContact.setTelephoneNumbers(phoneNums);
// Set primary contact email address
EmailAddress emailAddress =blcm.createEmailAddress(contactEmail);
Collection emailAddresses = new ArrayList();
emailAddresses.add(emailAddress);
primaryContact.setEmailAddresses(emailAddresses);
// Set primary contact for organization
org.setPrimaryContact(primaryContact);
String serviceName=request.getParameter("servicename");
String serviceDescription=request.getParameter("servicedescription");
String serviceURL=request.getParameter("serviceurl");
String svcbindDescription=request.getParameter("svcbinddescription");
// Create services and service
Collection services = new ArrayList();
Service service =
blcm.createService(serviceName);
InternationalString is =
blcm.createInternationalString(serviceDescription);
service.setDescription(is);
// Create service bindings
Collection serviceBindings = new ArrayList();
ServiceBinding binding = blcm.createServiceBinding();
is = blcm.createInternationalString(svcbindDescription);
binding.setDescription(is);
// allow us to publish a fictitious URL without an error
binding.setValidateURI(false);
binding.setAccessURI(serviceURL);
serviceBindings.add(binding);
// Add service bindings to service
service.addServiceBindings(serviceBindings);
// Add service to services, then add services to organization
services.add(service);
org.addServices(services);
//receive Classification scheme name and value
String classificationScheme=request.getParameter("classificationscheme");
String classificationName=request.getParameter("classificationname");
String classificationValue=request.getParameter("classificationvalue");
// Set classification scheme to NAICS
ClassificationScheme cScheme =
bqm.findClassificationSchemeByName(null, classificationScheme);
// Create and add classification
Classification classification = blcm.createClassification(cScheme,
classificationName,classificationValue);
Collection classifications = new ArrayList();
classifications.add(classification);
org.addClassifications(classifications);
// Add organization and submit to registry
// Retrieve key if successful
Collection orgs = new ArrayList();
orgs.add(org);
BulkResponse response1 = blcm.saveOrganizations(orgs);
Collection exceptions = response1.getExceptions();
if (exceptions == null) {
out.println("
");
out.println("<H3>Service Registering is Sucessful!</H3>");
out.println("
");
out.println("<H3>service information saved is</H3>");
out.println("<H3>");
out.println(orgName);
out.println("</H3>");
Collection keys = response1.getCollection();
Iterator keyIter = keys.iterator();
if (keyIter.hasNext()) {
javax.xml.registry.infomodel.Key orgKey =
(javax.xml.registry.infomodel.Key) keyIter.next();
String id = orgKey.getId();
out.println("<H3>service key is </H3>");
out.println("<H3>");
out.println(id);
out.println("</H3>");
}
} else {
Iterator excIter = exceptions.iterator();
Exception exception = null;
while (excIter.hasNext()) {
exception = (Exception) excIter.next();
System.err.println("Exception on save: " +
exception.toString());
}
}
} catch (Exception e) {
e.printStackTrace();}
}
}
the exception in the tomcat50-jwsdp/logs:
javax.xml.registry.JAXRException: javax.xml.bind.JAXBException
- with linked exception:
[javax.xml.soap.SOAPException: Unable to create message factory for SOAP: Provider com.sun.xml.messaging.saaj.soap.MessageImpl could not be instantiated: java.lang.IllegalAccessException: Class javax.xml.soap.FactoryFinder can not access a member of class com.sun.xml.messaging.saaj.soap.MessageImpl with modifiers "protected"]
at com.sun.xml.registry.uddi.Processor.processRequestJAXB(Unknown Source)
at com.sun.xml.registry.uddi.UDDIMapper.getAuthorizationToken(Unknown Source)
at com.sun.xml.registry.uddi.ConnectionImpl.setCredentials(Unknown Source)
at Publish.doPost(Publish.java:66)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:790)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:709)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:572)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.xml.bind.JAXBException
- with linked exception:
[javax.xml.soap.SOAPException: Unable to create message factory for SOAP: Provider com.sun.xml.messaging.saaj.soap.MessageImpl could not be instantiated: java.lang.IllegalAccessException: Class javax.xml.soap.FactoryFinder can not access a member of class com.sun.xml.messaging.saaj.soap.MessageImpl with modifiers "protected"]
at com.sun.xml.registry.common.util.MarshallerUtil.jaxbMarshalObject(Unknown Source)
... 32 more
expecting yours advise, thanks!!
I am so sorry,the post which is posted on Apr 27, 2006 8:43 PM is wrong, do not care about it please.see the post below please!