我想用CXF在JSF中創建動態Web服務調用器。但是當我加載這個簡單的代碼時,我得到錯誤。 代碼:爲什麼我在CXF中遇到這個錯誤
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("http://ws.strikeiron.com/IPLookup2?wsdl");
錯誤:
沒有工廠配置此應用。如果臉部初始化完全不起作用,就會發生這種情況 - 確保正確包含基本臉部應用程序所需的所有配置設置,並且包含所有必需的庫。同時檢查您的Web應用程序和您的容器的日誌輸出是否有任何異常!如果你這樣做並且一無所獲,這個錯誤可能是由於你使用了一些特殊的Web容器,它們不支持通過TLD文件註冊上下文偵聽器,並且沒有在你的web.xml中設置上下文偵聽器。一個典型的配置是這樣的; org.apache.myfaces.webapp.StartupServletContextListener
引起︰ java.lang.IllegalStateException - 沒有工廠配置爲此應用程序。如果臉部初始化完全不起作用,就會發生這種情況 - 確保正確包含基本臉部應用程序所需的所有配置設置,並且包含所有必需的庫。同時檢查您的Web應用程序和您的容器的日誌輸出是否有任何異常!如果你這樣做並且一無所獲,這個錯誤可能是由於你使用了一些特殊的Web容器,它們不支持通過TLD文件註冊上下文偵聽器,並且沒有在你的web.xml中設置上下文偵聽器。一個典型的配置是這樣的; org.apache.myfaces.webapp.StartupServletContextListener
任何想法如何解決這個問題?
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>ServiceInvoker</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<description>
This parameter tells MyFaces if javascript code should be allowed in
the rendered HTML output.
If javascript is allowed, command_link anchors will have javascript code
that submits the corresponding form.
If javascript is not allowed, the state saving info and nested parameters
will be added as url parameters.
Default is 'true'</description>
<param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<description>
If true, rendered HTML code will be formatted, so that it is 'human-readable'
i.e. additional line separators and whitespace will be written, that do not
influence the HTML code.
Default is 'true'</description>
<param-name>org.apache.myfaces.PRETTY_HTML</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<description>
If true, a javascript function will be rendered that is able to restore the
former vertical scroll on every request. Convenient feature if you have pages
with long lists and you do not want the browser page to always jump to the top
if you trigger a link or button action that stays on the same page.
Default is 'false'
</description>
<param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
</web-app>
faces-config.xml中
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
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-facesconfig_1_2.xsd"
version="1.2">
<managed-bean>
<description>Bean used for invoking services</description>
<managed-bean-name>invoker</managed-bean-name>
<managed-bean-class>org.cot.invoker.Invoker</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
這是我在Eclipse的控制檯中看到:
2010年3月22日15: 00:11 org.apache.cxf.endpoint.dynamic.DynamicClientFactory outputDebug 信息:創建的類: com.strikeiron.ws.GetRemainingHits,com.strikeiron.ws.GetRemainingHitsResponse,com.strikeiron.ws.LicenseInfo,com.strikeiron.ws.ObjectFactory,com.strikeiron.ws.RegisteredUser,com.strikeiron.ws.SubscriptionInfo,com。 strikeiron.ws.UnregisteredUser,com.strikeiron.ArrayOfMethodStatusRecord,com.strikeiron.ArrayOfSIWsStatus,com.strikeiron.ArrayOfServiceInfoRecord,com.strikeiron.ArrayOfString,com.strikeiron.ArrayOfString1,com.strikeiron.DNSInfo,com.strikeiron.DNSLookup,com。 strikeiron.DNSLookupResponse,com.strikeiron.GetServiceInfo,com.strikeiron.GetServiceInfoResponse,com.strikeiron.GetStatusCodes,com.strikeiron.GetStatusCodesForMethod,com.strikeiron.GetStatusCodesForMethodResponse,com.strikeiron.GetStatusCodesResponse,com.strikeiron.MethodStatusRecord,com.strikeiron。 ObjectFactory,com.strikeiron.SIWsOutputOfDNSInfo,com.strikeiron.SIWsOutputOfMethodStatusRecord,com.strikeiron.SIWsOutputOfSIWsResultArrayOfMethodStatusRecord,com.strikeiron.SIWsOutputOfSIWsResultArrayOfSer viceInfoRecord,com.strikeiron.SIWsResultArrayOfMethodStatusRecord,com.strikeiron.SIWsResultArrayOfSIWsStatus,com.strikeiron.SIWsResultArrayOfServiceInfoRecord,com.strikeiron.SIWsStatus,com.strikeiron.ServiceInfoRecord JE SLO 2010年3月22日15時00分13秒javax.faces.webapp._ErrorPageWriter handleThrowable 嚴重:發生異常 java.lang.IllegalStateException:沒有爲此應用程序配置的工廠。如果臉部初始化完全不起作用,就會發生這種情況 - 確保正確包含基本臉部應用程序所需的所有配置設置,並且包含所有必需的庫。同時檢查您的Web應用程序和您的容器的日誌輸出是否有任何異常! 如果你這樣做並沒有發現,這個錯誤可能是由於你使用了一些特殊的Web容器,它們不支持通過TLD文件註冊上下文偵聽器,而上下文偵聽器沒有在你的web.xml中設置。 典型的配置如下所示; org.apache.myfaces.webapp.StartupServletContextListener
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:106)
at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:356)
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:155)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
當我點擊:
<h:commandLink value="Invoke me!" actionListener="#{invoker.doInvoke}"></h:commandLink>
向我們展示了'faces-config.xml中'和'web.xml' – Bozho 2010-03-22 08:41:12
我也添加faces-config.xml和web.xml。嗯......我已經2天試圖解決這個問題 – Milan 2010-03-22 08:51:12
在日誌文件中是否還有其他異常/錯誤?像'NoClassDefFound',例如 – Bozho 2010-03-22 11:26:34