1

workflowService無効です。手動インジェクションはアプリケーションの他の部分で正常に機能するため、Bean 構成は正しいです。

これが私のリソースです:

@Path("/workflowProcess")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public class WorkflowProcessResource {

    @Autowired
    WorkflowService workflowService;

    @Autowired
    WorkflowProcessService workflowProcessService;

    @GET
    @Path ("/getWorkflowProcesses/{uuid}")
    public Collection<WorkflowProcessEntity> getWorkflows (@PathParam("uuid") String uuid) {
        WorkflowEntity workflowEntity = workflowService.findByUUID(uuid);

        return workflowEntity.getWorkflowProcesses();
    }
}

http://www.mkyong.com/webservices/jax-rs/jersey-spring-integration-example/のようなサイトで Google で見つけたものから、それがContextLoaderListener鍵のようです。しかし、私はすでにそれをアプリケーション コンテキストに追加しています。

import com.sun.jersey.spi.container.servlet.ServletContainer;
import com.sun.jersey.spi.spring.container.servlet.SpringServlet;
import org.atmosphere.cpr.AtmosphereFramework;
import org.atmosphere.cpr.AtmosphereServlet;
import org.atmosphere.handler.ReflectorServletProcessor;
import org.glassfish.grizzly.servlet.ServletRegistration;
import org.glassfish.grizzly.servlet.WebappContext;
import org.glassfish.grizzly.websockets.WebSocketAddOn;
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.grizzly.http.server.NetworkListener;

import java.io.IOException;
import java.util.logging.Logger;

public class Main {

    protected static final Logger logger = Logger.getLogger(Main.class.getName());

    public static void main(String[] args) throws IOException {
        logger.info("Starting server...");
        final HttpServer server = HttpServer.createSimpleServer(".", 8181);

        WebappContext ctx = new WebappContext("Socket", "/");

        //enable annotation configuration
        ctx.addContextInitParameter("contextClass", "org.springframework.web.context.support.AnnotationConfigWebApplicationContext");
        ctx.addContextInitParameter("contextConfigLocation", "com.production");

        //allow spring to do all of it's stuff
        ctx.addListener("org.springframework.web.context.ContextLoaderListener");

        //add jersey servlet support
        ServletRegistration jerseyServletRegistration = ctx.addServlet("JerseyServlet", new SpringServlet());
        jerseyServletRegistration.setInitParameter("com.sun.jersey.config.property.packages", "com.production.resource");
        jerseyServletRegistration.setInitParameter("com.sun.jersey.spi.container.ContainerResponseFilters", "com.production.resource.ResponseCorsFilter");
        jerseyServletRegistration.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
        jerseyServletRegistration.setLoadOnStartup(1);
        jerseyServletRegistration.addMapping("/api/*");
4

2 に答える 2

5

ここで必要なのは@InjectParamではなく@Autowired

于 2013-04-16T20:35:41.797 に答える
0

@InjectParam は @Autowired の代わりにうまく機能しましたが、わずかな変更がありました

@InjectParam はコンストラクター自体に適用できないため、コンストラクターへの引数に適用する必要があります。

public OrderService(@InjectParam OrderValidationService service, @InjectParam OrderCampaignService campaignService) { this.service = service; this.submissionErrorHandler = submissionErrorHandler; this.campaignService = campaignService; }

于 2015-09-15T05:46:38.990 に答える